我自己在写一个程序,其中一个收尾功能实现就是在 10 个文件写完后,判断当前目录的这些文件是否为空,如果是就删除,然后程序结束。 这里面遇到两个问题:
删除我使用了 _unlink() , remove() 都是一样的,可是实在无力解决。
_chdir(dir);
HANDLE hFind;
WIN32_FIND_DATA FindData;
hFind = FindFirstFile("./*.txt", &FindData);
while (FindNextFile(hFind, &FindData))
{
FILE *Emptyfp;
char ch[40];
strcpy(ch, FindData.cFileName);
if ((Emptyfp = fopen(FindData.cFileName, "r")) == NULL)
{
printf("未生成 ioLogik 文件!\n");
exit(0);
}
//ch = fgetc(Emptyfp);
//if (feof(Emptyfp) == 0)
//{
//printf("%s 文件为空\n",FindData.cFileName);
printf("%s\n",ch);
_unlink(ch);
//}
}
// Close the file handle
FindClose(hFind);
1
tghgffdgd 2017-09-05 23:04:07 +08:00 via Android 1
打开了不关闭当然就是被占用
|
2
goodspb 2017-09-05 23:09:18 +08:00 via iPhone
删除应该用路径就可以,不需要文件描述符…
|
3
bao3 OP @tghgffdgd 感谢,已经使用 fileclose() 关闭,确实可以删除。可是上面的循环,总是会剩下一个文件不删除,即便是空的。这个要怎么解决。
|
5
KeepPro 2017-09-05 23:44:13 +08:00 via Android 1
剩下的那个文件是第一个 findFirstFile 找到的那个吧。
|
8
alqaz 2017-09-06 01:10:40 +08:00 via Android
介意用 c++吗?
|
9
catror 2017-09-06 01:42:21 +08:00 via Android 1
写成 do while,不然第一个删不掉
|
10
ysc3839 2017-09-06 04:30:17 +08:00 via Android 1
|