簡體   English   中英

嘗試從文件讀入二維數組時出現分段錯誤

[英]segmentation fault while trying to read in from file to a 2D array

嘗試從文件讀取到二維動態數組時出現分段錯誤。 我知道這是一個有點含糊的問題,但這是我的第一個 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 ,但是在讀取它們之后,您不會在任何時候使用新大小分配數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM