0

我正在研究重命名或删除文件系统中的文件的程序。我正在使用 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;
}
4

1 回答 1

1

你的代码有很多问题。

char fdelete[25];

这在 20 年前至少可以接受,但现在文件名超过 25 个字符的可能性非常高。您可能想使用FILENAME_MAX.

fflush(stdin);

这(fflush使用为输入打开的文件作为参数调用)给出了未定义的行为。只是不要这样做。

gets(fdelete);

gets是安全问题的严重来源。永远不要使用它。改为使用fgets

char frename[25];

与 相同的问题fdelete

fflush(stdin);
gets(frename);

和上面一样的问题。

综上所述,remove应该删除一个文件,前提是该文件没有其他链接,并且您传递给它的名称是实际文件的名称。

于 2013-06-22T20:55:28.767 回答