【发布时间】:2019-08-05 18:50:05
【问题描述】:
#include<stdio.h>
void main()
{
FILE *a[10];
int i,j,k;
float b[10][4][4];
for(i=0;i<8;i++)
{
char filename[100];
sprintf(filename,"infile%d.txt",i);
a[i]=fopen(filename,"r");
}
for(i=0;i<8;i++)
{
for(j=0;j<2;j++)
{
for (k=0;k<3;k++)
{
fscanf(a[i],"%f",&b[i][j][k]);
}
}
}
for (i=0;i<8;i++)
{
printf("\n-----------------%d--------------------",i);
for(j=0;j<2;j++)
{
for(k=0;k<3;k++)
{
printf("\nb[%d][%d][%d]=%f",i,j,k,b[i][j][k]);
}
}
}
}
我用 C 语言编写了上面的代码。它只读取 8 个不同的文件并在终端中打印出来。文件名是infile0、infile1 和infile7。虽然代码运行,但它显示了终端中转储的分段错误核心。我完全不明白为什么会发生这种情况。谁能帮我找出代码中的错误。
【问题讨论】:
-
如果文件不存在怎么办?它会打印任何输出吗?
-
在core文件上使用gdb看看问题出在哪里
-
请提供文件内容
标签: c linux gcc segmentation-fault file-handling