有一个数据文件,里边放着五个字段:学号,姓名,语文,数学,英语五个字段,有个一个结构体数组 a[100]其类型分别为char index[11] ,char name[10],int Chinese,int Math,int English 我需要将文件中的所有数据读入结构体数组当中,但是一遇到数字,运行是时候他就会卡出来,直接程序结束了。求解,本人无法解决了,求大神解惑。
代码如下(只是一小部分):
void CJPX()
{
int i=0,c,o,u,a1;
char t1[11];
FILE *p,*p1;
p=fopen("ChengJi","r");
fscanf(p,"%s %s %s %s %s",b[0].index,b[0].name,b[0].Chinese,b[0].Math,b[0].English);
while (1)
{
fscanf(p,"%s %s %d %d %d",a[i].index,a[i].name,&a[i].Chinese,&a[i].Math,&a[i].English);
i=i+1;
if (fgetc(p)==EOF)
break;
}
fclose(p);
printf("%s",a[0].Chinese);
for (o=1;o<i-2;o++)
{
for (u=o+1;u<i-1;u++)
{
if (a[o].Chinese<=a[u].Chinese)
{
strcpy(t1,a[u].index);
strcpy(a[u].index,a[o].index);
strcpy(a[o].index,t1);
strcpy(t1,a[u].name);
strcpy(a[u].name,a[o].name);
strcpy(a[o].name,t1);
a1=a[u].Chinese;
a[u].Chinese=a[o].Chinese;
a[o].Chinese=a1;
a1=a[u].Math;
a[u].Math=a[o].Math;
a[o].Math=a1;
a1=a[u].English;
a[u].English=a[o].English;
a[o].English=a1;
}
}
}
p1=fopen("ChengJi1","w");
fprintf(p1," 学号\t\t姓名\t语文\t数学\t英语\n");
for (c=1;c<i;c++)
fprintf(p1,"%s\t%s\t%s\t%s\t%s\n",b[c].index,b[c].name,b[c].Chinese,b[c].Math,b[c].English);
}
fscanf(p,"%s %s %s %s %s",b[0].index,b[0].name,b[0].Chinese,b[0].Math,b[0].English);
改为
fscanf(p,"%d %s %d %d %d",b[0].index,b[0].name,b[0].Chinese,b[0].Math,b[0].English);
读取数据改成:
while (!feof(p))
{
fscanf(p,"%s %s %d %d %d\n", a[i].index,a[i].name,&a[i].Chinese,&a[i].Math,&a[i].English);
i=i+1;
}
//fscanf中的\n试一下去掉有没有影响。