[英]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';
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.