C语言读取文件中数据计算后输出出错

部分代码:
#include<stdio.h>
#include<stdlib.h>
int main()
#define N 3
{
char a[N][5];
int b[N][5],n,c[N]={0};
void input(char a[N][5],int b[N][5]);
void aver(char a[N][5],int b[N][5],int c[N]);
input(a,b);
printf("查看平均分请输入“1”\n查看均分排序请输入“2”\n查看分数段人数统计请按“3”\n查看单科最高分请输入“4”\n查看指定学生成绩请按“5”\n");
scanf("%d",&n);
if(n==1)
{
printf("平均分如下:\n");
aver(a,b,c);
}
else
return 0;
}
void input(char a[N][5],int b[N][5])
{
FILE * fp;
int i,j,x;
if((fp=fopen("C:\\Users\\lenovo\\Desktop\\C语言\\chengji.dat","r"))==NULL)
{
printf("can't open the file\n");
exit(0);
}
for(i=0;i<N;i++)
{
fgets(a[i],5,fp);
printf("%s",a[i]);
for(j=0;j<5;j++)
{
fscanf(fp,"%d",&b[i][j]);
printf("%d ",b[i][j]);
}
putchar('\n');
}
}
void aver(char a[N][5],int b[N][5],int c[N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<4;j++)
{
c[i]+=b[i][j+1]/4;
}
printf("%d %d",b[i][0],c[i]);
putchar('\n');
}
}
输入如图

出现那个-858993460 什么的
求解答

感觉是你读文件时和求平均时用到数组char a[N][5],int b[N][5],c[N]的问题
因为形式参数单向传递,无法传地址,你希望从input函数得到数组a、b、c的内容,返回来给主函数,这种做法貌似不行。
两种方法,一种是在主函数前面声数组char a[N][5],int b[N][5],c[N],即将它们变为全局变量;
另一种是传地址,用out或ref吧,百度上搜追问

我刚知道为什么了,,因为我在文本里的数据是一行一行的 然后读取字符串的命令读了空白的地方,什么原理我不知道,,不过我把第二行的东西接在第一行 就正确了

追答

加油

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-18
文件中是否有中文等宽字节字符?追问

sjr 13005005 100 100 100 100
xbd 14071104 99 99 99 99
lwq 14071108 88 88 88 88
这样的一个文本文件 我把后缀改了。dat

相似回答