C语言读txt文本总是出错,程序在下面

来源:百度知道 编辑:UC知道 时间:2024/09/25 05:52:23
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct student
{char xuehao[5];
char xingming[5];
char xingbie[6];
int yingyu;
int shuxue;
int yuwen;
float average;
};
main()
{FILE *fp,*f;
struct student arrary[31];
char s[50],a[10],b[10],c[10];
int i=1;
if (fp=fopen("h:\\wenjian.txt","r")==NULL)
printf("FILE-OPENING FAIL");
while(!feof(fp)&&i<31)
{ fgets(s,50,fp);
sscanf(fp,"%s%s%s%s%s%s%s",&arrary[i].xuehao,&arrary[i].xingming,&arrary[i].xingbie,a,b,c);
arrary[i].yingyu=atoi(a);
arrary[i].shuxue=atoi(b);
arrary[i].yuwen=atoi(c);
arrary[i].average=(arrary[i].yingyu+arrary[i].shuxue+arrary[i].yuwen)/3.0;
i++;
}
fclose(fp);
for(i=1;i<31;i++)
printf("%4d",arrary[i].shuxue);
}

你的读取是很有问题的。

fgets(s,50,fp);
sscanf(fp,"%s%s%s%s%s%s%s",&arrary[i].xuehao,&arrary[i].xingming,&arrary[i].xingbie,a,b,c);
改成:
fgets(s,50,fp);
sscanf(s,"%s%s%s%s%s%s%s",&arrary[i].xuehao,&arrary[i].xingming,&arrary[i].xingbie,a,b,c);

或者
fscanf(fp,"%s%s%s%s%s%s%s",&arrary[i].xuehao,&arrary[i].xingming,&arrary[i].xingbie,a,b,c);

首先必须你的文件格式没问题的,每个字段间至少要有空格等隔开