当前位置: 代码迷 >> C语言 >> [求助]运行时windows报错
  详细解决方案

[求助]运行时windows报错

热度:146   发布时间:2007-04-22 10:31:19.0
[求助]运行时windows报错

小弟编写了一个简单的程序,目的是将文件中的数据读入一个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);
}

报错情况见附件。

搜索更多相关的解决方案: windows  运行  

----------------解决方案--------------------------------------------------------

不好意思,附件补上:)



----------------解决方案--------------------------------------------------------
以下是引用huxiaoyu1979在2007-4-22 10:31:19的发言:

#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文件见附件。谢谢大家的共同参与指导
----------------解决方案--------------------------------------------------------
  相关解决方案