C - remove() - 错误2(文件不存在),但文件存在

时间:2017-01-19 20:27:07

标签: c input delete-file

在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?我该如何解决?

0 个答案:

没有答案