我正在尝试删除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
,但没有运气。
我做错了什么?
答案 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");
}