c-从文件中删除记录



在下面的代码中,我想按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!!!!nn");
}
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类型

client.firstName[0] = '' ;
client.lastName[0] = '' ;

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

可能是fistName&lastName已声明为数组,因此编译器将给出错误。

相关内容

  • 没有找到相关文章

最新更新