【发布时间】:2018-05-07 15:18:33
【问题描述】:
我正在尝试读取文件的内容,将它们插入到结构的字段中,然后打印出值。但它似乎忽略了患者数据的一半,因为它每次都会跳过包含数据的行。
Sophia Jackson 1234 141.0 1.1
Emma Aiden 5432 142.0 1.2
Olivia Lucas 5685 143.0 1.3
Ava Liam 5672 144.0 1.4
Mia Noah 3467 145.0 1.5
Isabella Ethan 8654 146.0 1.6
Riley Mason 2567 147.0 1.7
Aria Caden 6794 148.0 1.8
名称的格式是这样的,除了它们之间不是换行符
while(1) {
fscanf(fp,"%s %s %i %f %f",newptr->pfn,newptr->pln,&newptr->pid,&newptr->pwt,&newptr->phgnum);
printf("First Name: %s\n",newptr->pfn);
printf("Last Name: %s\n",newptr->pln);
printf("PID: %i\n",newptr->pid);
printf("Weight: %f\n",newptr->pwt);
printf("HG1AC: %f\n",newptr->phgnum);
if( 5 != fscanf(fp,"%s %s %i %f %f",newptr->pfn,newptr->pln,&newptr->pid,&newptr->pwt,&newptr->phgnum)) {
break;
}
}
【问题讨论】:
-
请显示newptr的定义
-
在您的输入文件中,数据
Sophia Jackson 1234 141.0 1.1 Emma Aiden 5432 142.0 1.2是否真正用空白行分隔? -
他们不是在尝试使用文件中的患者数据创建链接列表。所以希望是使用 fscanf 读取该行,将其插入到字段中,将患者插入到链表中,并使用某种终止语句,当它到达 EOF 时将结束循环。我两个scanf就足够了,但每次都跳过一行,基本上擦除了我一半的数据。有没有更好的方法来做到这一点?