gpt4 book ai didi

c - 将 fscanf 转换为 C 中的二维数组

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

我想将 txt 中的元素扫描到数组中。 txt 没有我将有多少行或列,它只包含一个坐标和数组的元素。它看起来像这样:

2,3
2,1
3,0
-

如何将这些数字放入数组中,以便 array[0][0] 将是 2array[1][0] 将是 3 等等...

我也希望能够与其他输入一起使用。

到目前为止我的代码:

??是因为如果我什至不知道每个输入 txt 将有多少行或列,我不知道应该如何声明这些。

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

int main()
{
FILE* in = fopen("in.txt", "r");

int x, y;

int array[??][??];

if (in == NULL) {
printf("Can't open in.txt");
fclose(in);
return 1;
}

if (fscanf(in, "%d,%d\n", &x, &y) != 2) {
printf("Cant read file.");
return 2;
}

for (int i = 0; i < ??; i++) {
for (int j = 0; j < ??; j++)
fscanf(in, "%d", &array[i][j]);
}

return 0;
}

最佳答案

您想读取值对列表吗?听起来您需要有一个(可能很长)两个数字组的数组。我可以建议建立一个结构来保存这些值,而不是记住 X 是第一个,Y 是第二个。像这样的东西应该有效:

int main()
{
FILE* in = fopen("lis.csv", "r");
int count=0;
int error=0;
int x, y;
typedef struct {
int x;
int y;
} COORD;
COORD array[999]={0};
if (in == NULL) {
printf("Can't open in.txt");
fclose(in);
return 1;
}
while(!feof(in))
{
if (fscanf(in, "%d,%d\n", &x, &y) != 2) {
printf("Cant read file.");
error=1;
break;
}
array[count].x=x;
array[count].y=y;
count++;
}
return error;
}

我没有为错误条件添加任何明亮的内容,如果您在读入这些值后对其进行一些处理,但您明白了,这会有所帮助。

关于c - 将 fscanf 转换为 C 中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436800/

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