在下面的代码中,我想通过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[0] = '\0' ;
client.lastName[0] = '\0' ;

会解决你的问题。这是因为,string is an array of chars in C,只要它没有遇到\0字符。现在,如果您要制作第一个char = '\0',那么字符串将在那里结束。

关于c - 从文件中删除记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22533226/

10-15 00:49