【问题标题】:How do I enter lots of integers in a loop in C/C++? [duplicate]如何在 C/C++ 的循环中输入大量整数? [复制]
【发布时间】:2018-03-25 05:24:41
【问题描述】:

我有这个sn-p:

printf("\nEnter number of elements: ", MAX);
scanf("%d", &num);
printf("\nEnter %d Elements : ", num);
for (i = 0; i < num; i++)
  scanf("%d", &arr[i]);

我想在arr[i] 中输入 1000 个整数,但是如果不手动输入 1000 个数字,我该怎么做呢?我正在考虑使用外部文件来存储数字,我只是在那里阅读,但我不知道如何......

【问题讨论】:

  • 看起来你对 C 比对 C++ 更感兴趣。坚持使用 C,不要忘记检查来自 scanf 的返回值,以确保您确实阅读了一些内容。 Also look into fscanf to read from files.
  • 我很灵活,我交替使用 C 和 C++
  • 在 C++ 中,you would use a std::ifstreamstd::cin 几乎相同
  • 输入重定向,例如./myprogram &lt;mydata.txt

标签: c


【解决方案1】:

有两种简单的方法: 首先,您可以使用数字文件:

printf("\nEnter number of elements: ", MAX);
scanf("%d", &num);

FILE *f = fopen("numbers.txt","r");
if (f == NULL){... handle error }
for (i = 0; i < num; i++)  
  fscanf(f,"%d", &arr[i]);
fclose(f);

这很好,但是您当然应该测试 fscanf 是否有错误(请参阅 fscanf 的文档),同时,您可以将 num 替换为等待 feof(f) 发出文件结束信号。

不过,在大多数操作系统上,都有一些 shell 管道实际上可以使文件成为程序的输入。对于您的 sn-p,您可以通过将数字的数量放在第一行然后将第二轮 scanfs 的输入(例如,空格分隔的数字)放入第二行来格式化文件。

然后,在 Linux 上, cat filename.txt | yourprogram 就像您通过键盘输入文件的内容一样。对于 Windows,将 cat 替换为 type (据我所知......)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2019-12-16
    • 2014-12-17
    相关资源
    最近更新 更多