簡體   English   中英

從文件讀取到 C 中的二維數組,沒有固定大小

[英]Reading from file into 2d Array in C without constant size

我有一個包含這樣內容的文本文件

5 6
01111
11110
01000
01111
11010
11111

我想從這個文件中讀取一個 function 並從內容中創建二維數組。

第一行的兩個數字是數組的大小和子數組的大小。

function 的結果應該是這樣的數組

{{0,1,1,1,1}, {1,1,1,1,0},{0,1,0,0,0},{0,1,1,1,1},{1,1,0,1,0},{1,1,1,1,1}}

那我怎么能做到呢?

現在我嘗試像這樣制作 function 但它錯誤

int** createArray(FILE *fp)
{
    int xdim;
    int ydim;
    fscanf(fp, "%d %d", &xdim, &ydim);

    int** arr = malloc(ydim * sizeof(*arr));;
    for (int y = 0; y < ydim; y++)
    {
        arr[y] = malloc(xdim * sizeof(**arr));
        fscanf(fp, "%d %d %d %d", arr[y]);
    }
    return arr;
}

只需在arr[y]上循環xdim次,然后使用fscanf讀取數字。 請注意, fscanf格式說明符中的空格" "會忽略所有空格——制表符、空格和換行符——因此它可以全部讀取。

int** arr = malloc(ydim * sizeof(*arr));;
if (arr == NULL) {
     abort();
}

for (int y = 0; y < ydim; y++) {

    arr[y] = malloc(xdim * sizeof(*arr[y]));
    if (arr[y] == NULL) {
        abort();
    }

    for (int i = 0; i < xdim; ++i) {
        char c;
        if (fscanf(fp, " %c", &c) != 1) {
            abort(); // handle error
        }
        arr[i][j] = c - '0';
    }
}

在godbolt上測試

暫無
暫無

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

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