C语言从文本文件读取数据到结构体数组中的问题

定义如下:structstudent{charno[9];charname[10];floatmark;};typedefstructstudentSTU;STU*tem... 定义如下:struct student{ char no[9]; char name[10]; float mark;};typedef struct student STU; STU *temp;____________________________________这是student.txt文件里的文本:
01010101,ABCEVVZ,96.000000020202,EFGWE,56.0000000303,HIJRWE,67.500000
____________________________________
这是我自己弄的读取部分:
temp=(STU *)malloc(100 * sizeof(STU));int n;FILE *fp;fp=fopen("student.txt","r");for(n=0;n<100;n++){ fscanf(fp,"%s,%s,%f\n",temp[n].no,temp[n].name,temp[n].mark); printf("%s\n",temp[n].no); printf("%s\n",temp[n].name); printf("%f\n",temp[n].mark);}____________________________________
我想把01010101给temp[0].no,ABABCEVVZ给temp[0].name,96.000000给temp[0].mark;020202给temp[1].no,EFGWE给temp[1].name,56.000000给temp[1].mark;以此类推,而且txt文件里的行数是不确定的,在1-99之间,要求读完文本最后一行时能结束循环。

可是我弄出来是这样子的T^T,请问该如何修改,求大神指点!!先谢谢了
展开
 我来答
金色潜鸟
推荐于2018-05-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5568万
展开全部
关键问题是用 逗号分隔的 字符串 ,不能用 逗号格式 这样分开地读出来。
要用 "%[^,],%[^,],%f" 格式 才行。
另外 读参数用 &temp[n].mark 才行,你漏了 &.
--------
你先用下面程序读2行,
01010101,ABABCEVVZ,96.0
020202,EFGWE,56.0
试验成功再读全部。
#include<stdio.h>
#include<math.h>
struct student
{
char no[9];
char name[10];
float mark;
};
typedef struct student STU;
STU *temp;
int main(){
int n;
FILE *fp=fopen("student.txt","r");
temp=(STU *)malloc(100 * sizeof(STU));
for (n=0;n<2;n++){
fscanf(fp,"%[^,],%[^,],%f",temp[n].no,temp[n].name, &temp[n].mark);
printf("%s %s %f\n",temp[n].no,temp[n].name,temp[n].mark);
}
fclose(fp);
}
--
读完的控制用 if (fscanf(...)==EOF) break;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式