关键问题是用 逗号分隔的 字符串 ,不能用 逗号格式 这样分开地读出来。
要用 "%[^,],%[^,],%f" 格式 才行。
另外 读参数用 &temp[n].mark 才行,你漏了 &.
--------
你先用下面程序读2行,
01010101,ABABCEVVZ,96.0
020202,EFGWE,56.0
试验成功再读全部。
#include
#include
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;