将文本文件扫描到数组中?

时间:2017-02-23 15:18:33

标签: c arrays

我有一个文本文件,我们称之为numbers.txt,我需要将其扫描成一个数组。

numbers.txt(下面是里面的内容)

8 2 5 9 10 4 11 -1

特殊值-1表示列表的结尾。

我对如何将它放入我的阵列感到困惑。我知道我需要一个循环,但不能把它放在它周围。另外,我不是在程序中扫描文件,我是在终端内进行的。

泰勒>档案< numbers.txt

所以我会像用户输入它一样进行设置。

 int main()
 {
    int numbers[50];
    int n, i;
    //scanf("%i", &n) 
    for(i = 0; i < 50; i++)
    {
        //not sure what to do
    }
 }

2 个答案:

答案 0 :(得分:2)

OP需要考虑许多停止条件。

  1. 每个OP的deleted comment数据读取为-1“...我希望它在-1时停止。所以像while(!=-1)运行循环。我可以用if if陈述也是。“ 。通过测试读取的值可以检测到这一点。

  2. 最多50个号码。测试读取的数字的数量。

  3. 不再输入(文件结束)。通过测试scanf()的{​​{1}}返回值

  4. ,可以检测到这种情况
  5. 罕见的输入错误。 (例如,键盘电缆坏了。)通过测试EOF的{​​{1}}返回值也可以检测到这一点。

  6. 如果输入是非数字的。通过测试scanf()返回值0可以检测到这一点。

  7. 如果输入文本的范围为EOF。对此的检测未在下面显示。

  8. 不清楚是否所有数据都需要在一行上,因此需要检测scanf()。对此的检测未在下面显示。

  9. 实施例

    int

答案 1 :(得分:0)

发布的代码无法编译!它缺少SELECT combined,SUBSTRING_INDEX( combined , ':', 1 ) AS a, SUBSTRING_INDEX(SUBSTRING_INDEX( combined , ':', 2 ),':',-1) AS b, SUBSTRING_INDEX(SUBSTRING_INDEX( combined , ':', -2 ),':',1) AS c, SUBSTRING_INDEX( combined , ':', -1 ) AS d FROM tablefoo WHERE combined is not null; 语句

以下是代码的一个版本:

  1. 干净地编译
  2. 遵循公理:每行只有一个语句,并且(最多)每个语句一个变量声明。
  3. 检查I / O错误并在stderr上宣布它们
  4. 包含所需的#include语句
  5. 为了便于阅读和理解:通过一个空行分隔代码块(for,if,while,do ... while,switch,case,default)
  6. 删除未使用的变量
  7. if / when读取#include退出读取循环
  8. 通过给出有意义的名字来避免使用'魔术'数字
  9. 现在是代码

    -1