在c中删除()函数给出错误?

时间:2013-03-28 06:43:19

标签: c

以下函数采用名称并从名为All.bin的二进制文件中删除该名称。 据我所知,它工作正常,但删除功能总是给出错误

 void del(char *name)
    {
        struct database d; //strucutre variable containing name and meaning
        FILE *p, *q;
        p = fopen("All.bin","r"); //original file
        q = fopen("temp.bin","w"); // temp file
        while(fread(&d,sizeof(d),1,p))
            if(strcmp(d.name,name) != 0)
                fwrite(&d,sizeof(d),1,q);
        fclose(p);
        fclose(q);
        if(remove("All.bin")!=0) //PROBLEM
            printf("Error");
        if(rename("temp.bin","All.bin")!=0)
            printf("Error@");
        getch();
    }

2 个答案:

答案 0 :(得分:0)

这对我来说很好。创建All.bin文件后更改文件权限

答案 1 :(得分:0)

检查All.bin的文件权限,并尝试unlink()函数。

如果All.bin是由同一个进程生成的(比如函数调用可能只运行一次,但之后没有),那么你需要在fclose()的情况下检查关闭文件流的句柄。< / p>