fscanf进入C中的二维数组

时间:2018-11-22 18:59:53

标签: c arrays scanf

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

2,3
2,1
3,0
-

我如何将这些数字放入数组中,以便array[0][0]将是2,而array[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;
}

2 个答案:

答案 0 :(得分:0)

您想读取值对列表吗?听起来您需要具有(可能很长)两个数字的数组。我可能不建议设置一个结构来保存值,而不是记住X是第一个,Y是第二个。这样的事情应该起作用:

newBranch

对于错误情况,我没有添加任何亮点,如果您在读取值后对值进行了一些操作,但是您有所了解,这会有所帮助。

答案 1 :(得分:0)

您应该使用动态数组分配将元素从未知的txt文件扫描到数组中。 对于C ++程序员而言,最佳解决方案是std::vector。 但是C程序员应该使用替代解决方案。 请阅读这篇文章:(std::vector alternative for C