C 从文件中删除记录

C 从文件中删除记录,c,file,delete-record,C,File,Delete Record,在下面的代码中,我想按fwrite(&emptyEntry…)行删除记录。下面的代码可以工作,但当我试图通过将所有结构成员赋值为0或null来使条目过时时,就像: client.accountNo=0; client.firstName=""; client.lastName=""; client.balance=0; 编译器告诉我“表达式必须是左值”的错误。acccountNo和balance不会给出任何错误,但是firstName和lastName变量赋值由编译器加下划线。你知道为什么会这

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

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

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

替换

client.firstName="";

这与

strcpy(client.firstName[0], "") ;
请记住,与其他语言不同,C语言中没有
字符串
类型。

替换

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

这与

strcpy(client.firstName[0], "") ;
记住,与其他语言不同,C中没有
字符串
类型

client.firstName[0] = '\0' ;
client.lastName[0] = '\0' ;
这会解决你的问题。这是因为,
字符串是C
中的字符数组,只要它没有遇到
\0
字符即可。现在,如果您将第一个
char='\0'
,那么字符串本身将在那里结束


这会解决你的问题。这是因为,
字符串是C
中的字符数组,只要它没有遇到
\0
字符即可。现在,如果您将第一个
char='\0'
,那么字符串本身将在那里结束。

什么是
struct carData
?显示更多代码。不能使用
=
分配字符串,必须使用
strcpy()
。什么是
struct-carData
?显示更多代码。您不能将
=
分配给字符串,您必须使用
strcpy()
@Abhineet,我在解决方案中使用了这个词,因为在问题中没有提到结构声明。完全一样。我将它声明为char carBrand[15]@Abhineet,我在解决方案中使用了这个词,因为在这个问题中,它并没有提到结构声明。就像这样。我将它声明为char carBrand[15]实际上,字符串是每种语言中的字符数组(泛化,我不知道每种语言lol)实际上,字符串是每种语言中的字符数组(泛化,我不知道每种语言lol)