删除功能不起作用

时间:2014-12-03 11:55:01

标签: c

我正在尝试删除C程序中的文件。所以我首先检查文件是否存在,如果是,我使用remove函数。这是我的代码:

    if (!(f = fopen(position, "r")))
    {
        system("cls");
        printf("User does not exist! Please enter the user again: ");
    }
    else
    {
        status = remove(position);

        /*Check if file has been properly deleted*/
        if(status == 0)
        {
            printf("User deleted successfully.\n\n");
            break;
        }
        else
        {
            printf("Unable to delete the user\n");
        }
    }

当然,如果文件肯定存在,删除文件应该没有问题。无论如何,这段代码不起作用。我刚回来"Unable to delete the user"

我也尝试过使用unlink和导入unistd.h,但没有运气。

我做错了什么?

3 个答案:

答案 0 :(得分:4)

检查此相关question

如果您必须删除fopen() - ed路径(文件),则仅当您fclose()时才会将其删除。**

但我想如果您只是想在不使用之前删除该文件,请不要使用fopen并只需调用remove函数。

**编辑:它甚至不知道,而且它依赖于系统。

因此删除文件的最佳方法是在不流式传输时调用remove(path_of_file):

remove(path_of_file);

或者如果您需要打开文件:

fopen/open;
(...)
fclose/fclose;
remove

答案 1 :(得分:1)

来自ISO / IEC9899

  

7.19.4.1删除功能

[...]

  

描述

     

2 remove函数会导致名称为filename指向的字符串的文件   不再可以通过该名称访问。随后尝试使用该文件打开该文件   名称将失败,除非它是重新创建的。 如果文件已打开,则删除该行为   函数是实现定义的

只需阅读标准帮助很多;)

答案 2 :(得分:0)

您可以使用此代码段删除文件。首先检查文件是否存在,然后尝试删除文件。

if( access( fname, F_OK ) != -1 ) {
   status = remove(position);
        /*Check if file has been properly deleted*/
        if(status == 0){
            printf("User deleted successfully.\n\n");
        }
        else{
            printf("Unable to delete the user\n");
        }

} else {
    // file doesn't exist
 printf("Sorry! file doesn't exist\n");
}