以下函数采用名称并从名为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();
}
答案 0 :(得分:0)
这对我来说很好。创建All.bin文件后更改文件权限
答案 1 :(得分:0)
检查All.bin的文件权限,并尝试unlink()函数。
如果All.bin是由同一个进程生成的(比如函数调用可能只运行一次,但之后没有),那么你需要在fclose()的情况下检查关闭文件流的句柄。< / p>