为什么我建立的文件在U盘上删除不了啊?

我用: mCmdParam.Create.mPathName[0] = '/'; mCmdParam.Create.mPathName[1] = 'W'; mCmdParam.Create.mPathName[2] = 'J'; mCmdParam.Create.mPathName[3] = '1'; mCmdParam.Create.mPathName[4] = '\0'; 这种形式复制文件名就可以删除, 用: strcpy(mCmdParam.Create.mPathName,FileName); 这个语句建立的文件就不能删除, 到底错在哪里?

这可能是C语言问题,在C语言中strcpy这个函数拷贝时会把"\0"给拷贝过去。比如说你的文件名是 01234567 你只要拷贝8个字节就OK了。但是你用strcpy就会拷贝9个字节。简单点说就是可能你不能简单的用strcpy来复制文件名。 另外 mCmdParam.Create.mPathName[0] = '/';->不应该出现在文件名中吧? mCmdParam.Create.mPathName[1] = 'W'; mCmdParam.Create.mPathName[2] = 'J'; mCmdParam.Create.mPathName[3] = '1'; mCmdParam.Create.mPathName[4] = '\0';在文件名中未使用的部分应该用空格填充,'\0'是不应该出现的。


上面的第一种复值方式是完全正确的,而第2种方式不能删除的话,那就需要看你的FileName里面的复值是什么形式的了


估计是第二种FileName里面没有路径吧! 第一种: mCmdParam.Create.mPathName[0] = '/'; 就相当于增加了路径,表示在当前路径下,建立文件! 这个是我的理解


谢谢楼上 各位了,我再看看


只有登录才能回复,可以选择微信账号登录