c - 尝试从文件读入二维数组时出现段错误

标签 c segmentation-fault dynamic-arrays

我在尝试从文件读入二维动态数组时遇到段错误。我知道这个问题有点模糊,但这是我的第一个 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 循环填充二维数组。

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,但是读取它们后,您不会在任何时候使用新尺寸。

关于c - 尝试从文件读入二维数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643831/

相关文章:

c++ - 在本地机器上获取可用的物理驱动器

c++ - segmentation 故障的常见原因的明确列表

c - 尝试将文本文件加载到数组中,出现段错误。有什么想法吗?

php - 通过 PHP/MySQL 联合表搜索获取正确的数组键

python - 在 Python 中使用动态数组反序列化 C 结构

c++ - 如何在 C++ 中处理一副纸牌

创建静态全局的多个实例/副本

奇怪的数组覆盖

c - 如何用 char* 复制一个结构并指向它?

c++ - 在 Ubuntu 17.04 x64 下使用 SpiderMonkey (libmozjs-45.0.2) 的段错误