gpt4 book ai didi

c - 从文本文件读取网格并将其存储在二维数组中?

转载 作者:行者123 更新时间:2023-11-30 15:24:09 25 4
gpt4 key购买 nike

假设您有一个名为“input.txt”的文件,如下所示:

5
0 0 0 0 0
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0

上面的 5 x 5 网格。您希望将 5 x 5 网格存储到二维 C 数组中。我的问题是将文件读入该网格。

这是我的 C 文件,它读取数据,将其存储在 2D 整数 数组中并输出其内容

int main (int argc){

FILE *fp;
char ch;
int **C; //Our 2D Array
char filenamein[] = "input.txt";

fp = fopen(filenamein,"r");

N = (ch = fgetc(fp)) - 48;

//Initialize Grid, set all cells to 0
C = malloc(N * sizeof(int *));
for (i = 0; i < N; i++) {
C[i] = malloc(N * sizeof(int));
}
for (i=0;i<N;i++) {
for (j=0;j<N;j++) {
C[i][j]=0;
}
}

//Read array, store into array
while ((ch = fgetc(fp) ) != EOF)
{
for (i=0;i<N;i++){
for (j=0;j<N;j++){
C[i][j] = ch - 48;
}
}
}

//Print 2D Array:

for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", C[i][j]);
printf("\n");
}

fclose(fp);
}

调用此函数后我得到:

-38 -38 -38 -38 -38
-38 -38 -38 -38 -38
-38 -38 -38 -38 -38
-38 -38 -38 -38 -38
-38 -38 -38 -38 -38

网格根据我的推断输出空白/NULL 的字符到十进制 ASCII 代码,因此我的问题是将文本文件读入数组。

如何读取文本文件以将数字存储到数组中?

最佳答案

此代码按预期工作。最好使用 fscanf 而不是 fgetc 但我没有在您的代码中更正这一点。

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
FILE *fp;
unsigned char ch;
int **C; //Our 2D Array
int N, i, j;
char filenamein[] = "input.txt";

fp = fopen(filenamein,"r");

N = (ch = fgetc(fp)) - 48;

//Initialize Grid, set all cells to 0
C = malloc(N * sizeof(int *));
for (i = 0; i < N; i++)
C[i] = malloc(N * sizeof(int));

for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
C[i][j] = 0;

i = 0;
j = 0;
do {
ch = fgetc(fp);
if (ch != ' ' && ch != '\n') {
C[i][j] = ch - 48;
j++;
i += j / N;
j %= N;
}
} while(i < N && j < N);

//Print 2D Array:
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", C[i][j]);
printf("\n");
}
fclose(fp);
}

关于c - 从文本文件读取网格并将其存储在二维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28531830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com