c-尝试从文件读入2D阵列时出现分段错误



我在尝试从文件读取到2D动态数组时遇到分段错误。我知道这是一个有点模糊的问题,但这是我的第一个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);

同样,任何方向都会有所帮助。感谢

rowSizecolSize均为零:

mazearray = (char**) malloc(sizeof(char*)*rowsize);
for(i =0; i<rowsize; ++i)
{
mazearray[i]= (char*)malloc(sizeof(char)*colsize);
}

不会向mazearray分配任何字节。for循环将不会执行任何次数。

我看到您从stdin中读取了rowSizecolSize,但在读取了它们之后,您在任何时候都不会使用新的大小来分配阵列。

相关内容

  • 没有找到相关文章

最新更新