尝试从文件读入二维数组时出现段错误
问题描述:
我在尝试从文件读取到二维动态数组时遇到段错误。我知道这是一个含糊不清的问题,但这是我的第一个C代码,我一直无法找出问题所在。任何方向将不胜感激。 这些是我的变量:尝试从文件读入二维数组时出现段错误
int i;
int rowsize=0;
int colsize=0;
int colenter=0;
int rowenter=0;
int colexit=0;
int rowexit=0;
char sizestring[20];
char enterstring[20];
char exitstring[20];
int line=0;
int j;
int k;
char**mazearray;
FILE*file;
这是我的分配。
mazearray = (char**) malloc(sizeof(char*)*rowsize);
for(i =0; i<rowsize; ++i)
{
mazearray[i]= (char*)malloc(sizeof(char)*colsize);
}
这就是我试图从文件中读取和解析信息。我首先尝试读取包含迷宫信息(数组大小,入口,出口等)的3行字符串,然后尝试用底部的for循环填充2d数组。
file = fopen(argv[1],"r");
if (!file)
{
printf("The file is not connected/n");
}
while (!feof(file))
{
while(line<3)
{
if(line==0)
{
fgets(sizestring,20,file);
sscanf(sizestring,"%d,%d", &colsize, &rowsize);
line++;
}
else if(line ==1)
{
fgets(enterstring,20,file);
sscanf(enterstring,"%d,%d",&colenter, &rowenter);
line++;
}
else if(line ==2)
{
fgets(exitstring,20,file);
sscanf(exitstring, "%d,%d", &colexit, &rowexit);
line++;
}
}
for(j=0; j<rowsize; j++)
{
for(k=0; k<colsize; k++)
{
fscanf(file,"%c",&mazearray[j][k]);
}
}
}
fclose(file);
再次,任何方向将有所帮助。由于
答
rowSize
和colSize
均为零:
mazearray = (char**) malloc(sizeof(char*)*rowsize);
for(i =0; i<rowsize; ++i)
{
mazearray[i]= (char*)malloc(sizeof(char)*colsize);
}
没有字节将被分配到mazearray
。 for
循环将不会执行。
我看到你在rowSize
和colSize
从stdin
中读到,但读过它们之后,你不会在任何时候为你的数组分配新的大小。
+0
谢谢。我不再有seg故障了。但我仍然无法用底部的for循环读入。我可以阅读前三行。 –
那么你什么时候做分配?在阅读实际尺寸之前? –
我认为问题可能在这里'int rowsize = 0; int colsize = 0;' – roottraveller
您可以在文件中添加错误日志和示例数据吗? – cse