C语言fscanf读文件的问题 帮忙看一下问题在哪?

文件中格式如下:
11456 74 67 146 136 423
07140 75 72 143 132 422
00831 66 71 146 135 418
00967 75 62 141 131 409
07538 76 72 135 120 403
读取文件代码:
int a[200][4]={0},i,j;
char b[200][8];
FILE *fp;
if((fp=fopen("aa.txt","r"))==NULL)
{
printf("Can't open the file!\n");
exit(0);
}
for(i=0;i<200;i++)
{
fscanf(fp,"%s %d %d %d %d %d",b[i],&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
}
fclose(fp);
for(i=0;i<200;i++)
{
printf("%d %d %d %d %d\n",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4]);
}

int a[200][4],下面用到了a[i][4],说明a这个数组的下标越界了。应改为a[i][5]。
另外测试数据只有5行,程序中应该也有体现。改过之后的程序(含注释)如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[200][5]={0},i,j=0;//原来的4改成了5
char b[200][8];
FILE *fp;
if((fp=fopen("aa.txt","r"))==NULL)
{
printf("Can't open the file!\n");
exit(0);
}
for(i=0;i<200 && !feof(fp);i++,j++)//循环条件加入了不能是文件结束的判断,j用做记录所读行数
{
fscanf(fp,"%s %d %d %d %d %d",b[i],&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
}
fclose(fp);
for(i=0;i<j;i++)//用j(总行数)来控制输出。
{
printf("%s %d %d %d %d %d\n",b[i],a[i][0],a[i][1],a[i][2],a[i][3],a[i][4]);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-06
fscanf(fp,"%s %d %d %d %d %d",b[i],&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);

b[i]前面的&呢?追问

不是这的问题,char b[200][8],这是定义
b[i]已经是地址了,即使加上&也不对,还是输出错误

相似回答