在下面的代码中,我想通过 fwrite(&emptyEntry...)
行删除记录。下面的代码有效,但是当我尝试通过为所有结构成员分配 0 或 null 来使条目过时时:
client.accountNo=0;
client.firstName="";
client.lastName="";
client.balance=0;
编译器通过说“表达式必须是左值”给我错误。 acccountNo 和 balance 不会给出任何错误,但 firstName 和 lastName 变量赋值由编译器加下划线。你知道为什么会这样吗?我可以使用上面的代码不能用于删除单独分配结构成员的记录吗?
fread(&client, sizeof(struct carData), 1, filePointer);
if (client.accountNo == 0)
{
printf("This record does not exist!!!!\n\n");
}
else
{
fseek(filePointer, (del - 1)*sizeof(struct clientData), SEEK_SET);
fwrite(&emptyEntry, sizeof(struct clientData), 1, filePointer);
printf("Entry deleted.");
}
最佳答案
替换
client.firstName="";
通过
client.firstName[0] = 0 ;
大致相同
strcpy(client.firstName[0], "") ;
请记住,与其他语言不同,C 中没有 string
类型。
关于c - 从文件中删除一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533226/