【问题标题】:how to take input from a file in a certain way in C如何在C中以某种方式从文件中获取输入
【发布时间】:2011-02-24 15:16:40
【问题描述】:

假设数据的方式是 123 134 2312 32131 2131231 211212

它应该将它们作为不同的数字并将它们存储在一个整数数组中。

【问题讨论】:

  • 这是作业吗?当你被卡住时,可以问一个具体的问题。但是,要求完整的程序是不行的。

标签: c text-parsing


【解决方案1】:

您可以使用fscanf%d 格式说明符从文本文件中读取连续的整数值。

【讨论】:

    【解决方案2】:
    int i = 0, cap = 10;
    int *a = malloc(cap * sizeof(int));
    int n;
    while (scanf("%d", &n))
    {
        if (i == cap)
            a = realloc(a, (cap *= 2) * sizeof(int));
        a[i++] = n;
    }
    

    【讨论】:

    • feof() 并没有像你想象的那样做
    • 我认为更好的方法是继续阅读直到 fscanf 不返回 1(读取的字段数)。
    • 它检查标准输入上的文件结尾,这标志着 Ctrl+D 或关闭的管道。也许我只是太累了,但我看不到缺少什么。
    • 好点安德烈亚斯。那是你指的吗,尼尔?已修改(并修复了 scanf 中的一个错误)。
    • @Marcelo 很多人没有意识到这一点——大多数 C++ 代码在 istream::eof() 函数上循环,而当它应该循环读取操作成功时. feof() 用于测试读取操作失败的原因,而不是预测它是否会成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2012-06-11
    相关资源
    最近更新 更多