小弟编写了一个简单的程序,目的是将文件中的数据读入一个2维数组中,可以运行程序就总是windows报错,不知道报错是否影响程序运行,谢谢。
代码如下:
#include<stdio.h>
void main()
{
int a[325][7];// 30 is number of combination 4 is m
int i,j;
FILE *file_control;
file_control=fopen("data.txt","r");
for (i=0;i<326;i++)
{
for (j=0;i<8;j++)
{
fscanf(file_control,"%d",&a[i][j]);
printf("%d\n", a[i][j]);
}
}
fclose(file_control);
}
报错情况见附件。
----------------解决方案--------------------------------------------------------
不好意思,附件补上:)
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int a[325][7];// 30 is number of combination 4 is m
int i,j;
FILE *file_control;
file_control=fopen("data.txt","r");
for (i=0;i<326;i++)
{
for (j=0;i<8;j++)//应为i<7
{
fscanf(file_control,"%d",&a[i][j]);
printf("%d\n", a[i][j]);
}
}
fclose(file_control);
}
----------------解决方案--------------------------------------------------------
我用3楼的程序试了一下,还是不行。
我这么改了一下,调试通过。请指点
#include<stdio.h>
void main()
{
int a[325][7];// 30 is number of combination 4 is m
int i,j;
FILE *file_control;
file_control=fopen("data.txt","r");
for (i=0;i<326;i++)
{
for (j=0;i<8;j++)
{
fscanf(file_control,"%d",&a[i][j]);
if(feof(file_control)!=0) break; /*feof() 俄用来检测文件指针是否
指向了文件结尾,如果是,则返回一个非0值,如果没有指向文件结尾,则返回0,所以,
没有这个语句时,当文件指针指向文件尾,已经没有数据可以读出了,但是没有在这时
结束程序,报错!,不知我这么解说对不对,也请高手指教,我也是biginner.。但是程序
能通过调试(在C-Free3.5中)。*/
printf("%d\n", a[i][j]);
}
}
fclose(file_control);
}
/*我们互相帮助哈 */
/*请批评来得更猛烈些吧!*/
----------------解决方案--------------------------------------------------------
void main()
{
int a[325][7];// 30 is number of combination 4 is m
int i,j;
FILE *file_control;
file_control=fopen("data.txt","r");
for (i=0;i<326;i++) /*326-->325*/
{
for (j=0;i<8;j++) /*8-->7*/
{
fscanf(file_control,"%d",&a[i][j]);/*使用file_control时应当验证file_control是否是NULL
即文件是是否打开*/
printf("%d\n", a[i][j]);
}
}
fclose(file_control);
}
----------------解决方案--------------------------------------------------------
file_control确实不是null,不知问题出在什么地方
----------------解决方案--------------------------------------------------------
数组越界使用.
----------------解决方案--------------------------------------------------------
neverTheSame,能讲的清楚些吗?谢谢
----------------解决方案--------------------------------------------------------
补充一下,开始确有数组越界问题。现有一个新问题就是数据没有按规定全读出来。
#include<stdio.h>
void main()
{
int a[70][5];// 30 is number of combination 4 is m
int i,j,p;
i=0;
j=0;
FILE *file_control;
file_control=fopen("data.txt","r");
if((file_control=fopen("data.txt","r"))==NULL)
printf("Cannot open file strike any key exit!");
for (i=0;i<71;i++)
{
for (j=0;i<6;j++)
{
fscanf(file_control,"%3d",&a[i][j]);
// printf("%3d", a[i][j]);
}
}
fclose(file_control);
p=a[3][4]+a[44][4];
printf("%3d",p);
}
最后想通过打印p来检查一下,结果这个就好像没有执行。而且data.txt还有一小部分没读完。
----------------解决方案--------------------------------------------------------
data文件见附件。谢谢大家的共同参与指导
----------------解决方案--------------------------------------------------------