我正在研究重命名或删除文件系统中文件的程序。我正在使用C,它在Linux机器上运行良好,但在Windows上运行失败。我用gcc编译器套装。以下是不从我的文件系统中删除文件的代码。
提前致谢
#include<stdio.h>
int main()
{
printf("Program demonstrating file renaming and file deletion. \n");
printf("Enter file name to be deleted : ");
char fdelete[25];
fflush(stdin);
gets(fdelete);
printf("Enter file name to be renamed : ");
char frename[25];
fflush(stdin);
gets(frename);
if (remove(fdelete)!=0)
{
printf("error deleting the file.\n");
}
if(rename("test2.txt",frename)!=0) //test2.txt is the original file
{
printf("eeror renaming the file.\n");
}
return 0;
}
答案 0 :(得分:1)
您的代码存在很多问题。
char fdelete[25];
这可能至少接近20年前的可接受程度,但现在文件名超过25个字符的可能性非常高。您可能想要使用FILENAME_MAX
。
fflush(stdin);
这个(调用fflush
打开一个文件作为参数输入)给出了未定义的行为。只是不要这样做。
gets(fdelete);
gets
是安全问题的严重来源。永远不要使用它。请改用fgets
。
char frename[25];
与fdelete
相同的问题。
fflush(stdin);
gets(frename);
与上述问题相同。
所有这一切,remove
应删除文件,前提是该文件没有其他链接,传递给它的名称是实际文件的名称。