在C中,我希望通过以下方式删除文件:1)接受文件名作为输入然后2)删除文件。
但是,当我提供存在的文件名时,我会从remove()函数中获取错误代码2('文件不存在')。
我尝试过使用1)只是文件的名称和2)文件的完整路径。这是我的代码:
#include<stdio.h>
#include<errno.h>
#include<dirent.h>
int main()
{
// sanity check; print names of all files in current dir
DIR *d;
struct dirent *dir;
d = opendir(".");
if (d)
{
while ((dir = readdir(d)) != NULL)
{
printf("%s\n", dir->d_name); // prints 'testfile.txt' (and others)
}
closedir(d);
}
char buffer[101];
printf("Name of file to delete: ");
char *result = fgets(buffer, 101, stdin);
/*
input tried: 'testfile.txt', 'full/path to/testfile.txt',
'full/path\ to/testfile.txt'
(all less than 101 chars)
*/
if (remove(result) == 0)
printf("File %s deleted.\n", result);
else
printf("%d\n", errno); // always prints 2 ('file does not exist' error)
fprintf(stderr, "Error deleting the file %s\n", result); // as given in input
return 0;
}
为什么remove()失败并显示错误代码2?我该如何解决?