遍历某文件夹并删除一定后缀的文件——@soil@2

继昨日留下的问题:有一些文件因带有特殊符号而无法进行删除操作?

为什么有这些特殊符号就不行了呢?是因为这些特殊符号的本质就是   '?'   ,而文件或者文件夹的命名是不能有"           < > / \ | : " * ?"这些符号的,所以不能进行操作。

于是我想到只要把这些文件的名称获取,然后去掉这些特殊符号,通过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]。

再接着运行,确实是没错误没警告,但是程序最后还是没能把不能删除的文件的文件名称进行修改。

剩下的问题需要鞥解决了继续上传了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值