3

以下函数采用一个名称并从名为 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();
    }
4

2 回答 2

0

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

如果 All.bin 是由同一个进程生成的(比如说你调用的函数可能会工作一次,但在那之后就不行了),那么你需要检查在你的情况下关闭文件流的句柄 fclose()。

于 2013-03-28T12:51:27.313 回答
0

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

于 2013-03-28T08:32:45.967 回答