如何将 fread() 2 个结构组合在一起 C
How to fread() 2 structs together C
如何在 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 语言处理文件真的很陌生。谢谢!
假设您的文本格式如下。
name1
age1
name2
age2
在那种情况下,你需要的是。
while((fread((char *)&NAME, sizeof(struct clientName), 1, fp))==1 &&
(fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1){
printf("%s", NAME.name);
printf("\t\t%d", AGE.age);
}
转
while((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
进入
if((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
否则你会读取clientName,然后从while循环开始多次读取clientAge,因为文件还没有结束。当然,解析将是无效的,因为您的文件包含名称、年龄、名称、年龄等数据。因此,尝试将文件解析为名称、年龄、年龄、年龄等需要代表名称的字节并尝试将它们解析为年龄.
如何在 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 语言处理文件真的很陌生。谢谢!
假设您的文本格式如下。
name1
age1
name2
age2
在那种情况下,你需要的是。
while((fread((char *)&NAME, sizeof(struct clientName), 1, fp))==1 &&
(fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1){
printf("%s", NAME.name);
printf("\t\t%d", AGE.age);
}
转
while((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
进入
if((fread((char *)&AGE, sizeof(struct clientAge), 1, fp))==1)
否则你会读取clientName,然后从while循环开始多次读取clientAge,因为文件还没有结束。当然,解析将是无效的,因为您的文件包含名称、年龄、名称、年龄等数据。因此,尝试将文件解析为名称、年龄、年龄、年龄等需要代表名称的字节并尝试将它们解析为年龄.