从文件中删除记录

时间:2014-03-20 12:35:24

标签: c file delete-record

在下面的代码中,我想删除fwrite(&emptyEntry...)行的记录。下面的代码有效但当我尝试通过分配所有结构成员0或null来使条目过时时:

client.accountNo=0;
client.firstName="";
client.lastName="";
client.balance=0;

编译器通过说“表达式必须是左值”给我错误。 acccountNo和balance不会给出任何错误,但编译器会强调firstName和lastName变量赋值。你知道为什么会这样吗?我可以使用上面的代码不能用于删除单独分配struct成员的记录吗?

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.");
}

3 个答案:

答案 0 :(得分:2)

替换

client.firstName="";

通过

client.firstName[0] = 0 ;

大致相同
strcpy(client.firstName[0], "") ;

请记住,与其他语言不同,C语中没有string类型的内容。

答案 1 :(得分:1)

可能是拳头名称& lastName已声明为数组,因此编译器会给出错误。

答案 2 :(得分:1)

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

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