【问题标题】:Text to array in C文本到 C 中的数组
【发布时间】:2012-12-06 16:35:32
【问题描述】:

我不明白如何在 C 中使用 fscanf 将文本文件中的数据放入数组中,并且还能够以 cli :S 的用户身份编辑文本文件:S(此处为完整新手..)我试过了谷歌搜索,但所有出现的都是问题多于解决方案和 c++ 非示例的论坛。

任何帮助/示例将不胜感激:)

编辑:感谢您的快速回复,我似乎忘记提及我想使用 2D 数组,并且 txt 文件包含整数,每个后续元素之间有一个空格,并且每行都有一个新行!

编辑 2:所以根据我收集到的信息,我必须使用:

  1. Fscanf ("filename.txt", "rw")
  2. 创建一个数组[i][j]
  3. i 和 j 的嵌套 for 循环
  4. 如何将 fscanf 数据放入数组中?? 5.printf("%d\n", &array[i][j])

【问题讨论】:

  • fscanf() 带有格式说明符 %Ns 和一个大小为 N + 1 的目标数组将读取单词(即由空格分隔的文本)。
  • 这就是你要找的东西(stackoverflow.com/questions/410943/…)吗?
  • man fscanf 有概述、描述和示例

标签: c xcode arrays text scanf


【解决方案1】:

根据输入数据的格式,您可以执行以下操作来读取每一行的值。

int data[MAX_X][MAX_Y];
FILE * fp = fopen("mydata.txt", "r");
int x, y, value;
// TODO: Initialize data array
while (3 == fscanf(fp, "%d %d %d\n", &x, &y, &value))
{
    if ((x >= MAX_X) || (y >= MAX_Y))
    {
        fprintf(stderr, "range error\n");
        break;
    }
    data[x][y] = value;
}

很多细节都取决于输入数据的格式。

【讨论】:

  • 感谢您的回复,数据为整数值,即 23 64 9 32 56 42 98 4 44 87 68 60 51 22 11 等
  • 应该如何将它们读入二维数组?没有目标 x/y 索引的指示。第一个属于 [0,0] 然后下一个属于 [0,1] 等等?整数个数是否有固定限制?我想知道 fscanf() 是否不是读取值的最佳方法。
【解决方案2】:

拆分问题:

  1. 如何使用 fscanf 读取一个数字
  2. 如何移动到下一个号码
  3. 如何遍历行

然后再单独询问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多