【发布时间】:2015-04-23 02:54:38
【问题描述】:
我有一个程序可以将一个巨大的整数数组输出到标准输出,每个整数在一行中。例如:
103
104
105
107
我需要编写另一个程序来读取该数组并填充数字不是前一个数字的增量 1 的空格。数字之间的唯一区别是 2 (105,107),这样更容易。
这是我执行该逻辑的代码:
printf("d",num1);
if ((num2-num1) != 1)
numbetween = num1 + 1;
printf("%d", numbetween);
printf("%d", num2);
else(
printf("%d",num2);
)
所以这个程序的输出现在是:
103
104
105
106
107
我的问题是阅读数字。我知道我可以通过while (scanf("%hd", &num) != EOF) 一次读取所有行。但是要执行我想要的逻辑,我需要一次读取两行并用它们进行计算,我不知道如何。
【问题讨论】:
-
在每个循环迭代中调用两次
scanf()怎么样? -
您不必在每次迭代中读取两个数字。您开始阅读两个数字。之后,算法一次只读取一个数字,首先将先前迭代的
num2提升为num1,从标准输入重新填充num2,等等。通过输出num2完成。 -
@WhozCraig 我是个白痴。有一种更简单的方法可以做到这一点。抓取文件中的第一个数字,抓取最后一个数字,从第一个数字开始循环,直到到达最后一个数字并每次输出循环计数器。但现在的问题是,如何从 stdout 中获取第一个和最后一个数字?
-
第一个数字很简单;你读了它。最后一个数字也很简单;你记住你读的最后一个数字,并继续读新的数字,直到输入失败,当你得到一个新的数字时更新最后一个读的数字。
-
...并确保您确实阅读了至少 两个 数字。只有一个数字的文件应被视为错误状态或范围为一。由你决定。