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)