如何在1行中显示2条fread()
语句。
这是我的代码的一部分:
FILE *fp;
fp = fopen("hello", "rb");
struct clientName NAME;
struct clientAge AGE;
system("cls");
if(fp == NULL){
printf("ERROR");
getch();
}
else{
printf("NAME\t\tAGE\n");
printf("-----------------------------------------\n");
while((fread((char *)&NAME, sizeof(struct clientName), 1, fp))==1){
printf("%s", NAME.name);
while((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1){
printf("\t\t%d", AGE.age);
}
}
当有1组数据时,格式正确。但是,当有2组或更多组数据时,它开始变得混乱。我真的是C语言中的文件处理新手。谢谢!
答案 0 :(得分:3)
假设您的文本格式如下。
what_a_nice_day_it_is_today.txt
在这种情况下,您需要的是
name1
age1
name2
age2
答案 1 :(得分:1)
转动
while((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
进入
if((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
否则,由于循环未完成,因此您将读取clientName,然后多次读取clientAge,因为while会进行迭代。当然,解析将是无效的,因为您的文件包含名称,年龄,名称,年龄等数据。因此,尝试将文件解析为名称,年龄,年龄,年龄等。使用表示名称的字节并将其解析为年龄