继昨日留下的问题:有一些文件因带有特殊符号而无法进行删除操作?
为什么有这些特殊符号就不行了呢?是因为这些特殊符号的本质就是 '?' ,而文件或者文件夹的命名是不能有" < > / \ | : " * ?"这些符号的,所以不能进行操作。
于是我想到只要把这些文件的名称获取,然后去掉这些特殊符号,通过rename函数来修改文件的名称就变得很简单了。
但是问题却没有我想的这么简单,当你要使用rename函数的时候,传递的oldName参数还是带有特殊符号的原文件名,不然你找不到原文件,但是有特殊符号的话就会有“参数有误”的错误提示,从而无法使用rename函数了。
那么rename 函数无法用的话,我又想到能不能直接修改已获得文件的名称,只要传递的是数组名称的指针就好了,也就是指针的指针,char**类型的。
这里又有一个问题冒出来了(显示了我的C基础还是不够扎实),当形参是我所想象的char **类型时,我对于找到的文件名称进行取地址,也就是把&findData.cFileName当实参进行传递,这时候报出一个警告,类型不匹配
-->>char ** ' differs in levels of indirection from 'char (*)[260]
仔细一想,反正只是个警告,先不管他,先运行,看看能不能直接修改文件的参数。
当然,事实是不行的。
接着我想,说不定是这个警告的问题。
解决这个警告也就是把形参的形式和我传递的实参形式对应上,根据报错来看,这里的实参是 char (*)[260] ,但是却有点让人看不懂。
现在的我还暂时解释不了二维数组作为实参传递,形参需要怎样的形式。
总之,在这里应该把形参的形式由 char **fileName 改为 char (*fileName)[260]。
再接着运行,确实是没错误没警告,但是程序最后还是没能把不能删除的文件的文件名称进行修改。
剩下的问题需要鞥解决了继续上传了。