我正在开发重命名或删除文件系统中的文件的程序。我使用的是 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;
}
最佳答案
你的代码有很多问题。
char fdelete[25];
这在 20 年前至少是可以接受的,但现在文件名长度超过 25 个字符的可能性相当高。您可能想使用FILENAME_MAX
。
fflush(stdin);
这(使用打开输入的文件作为参数调用 fflush
)会产生未定义的行为。只是不要这样做。
gets(fdelete);
gets
是安全问题的严重来源。切勿使用它。请改用 fgets
。
char frename[25];
与fdelete
相同的问题。
fflush(stdin);
gets(frename);
与上面相同的问题。
总而言之,remove
应该删除一个文件,前提是没有其他链接指向该文件,并且您传递给它的名称是实际文件的名称。
关于c - windows下C盘文件删除和重命名的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255157/