我正在尝试从一本未命名的书中学习 C,其中包含以下示例代码:
#include <stdio.h>
int main() {
char word[10];
int i = 0;
while (scanf("%9s", word) == 1) {
i = i+1;
if (i % 2) {
fprintf(stdout, "%s\n", word);
} else {
fprintf(stderr, "%s\n", word);
}
return 0;
}
}
该示例是通过运行来演示将输出管道传输到单独的文件中
./thisprogram < input.txt > output.txt 2> error.txt
并且应该将每隔一个单词输出到相应的文件中。看起来它应该可以工作,但是当我运行它时,只会输出第一个单词,我不明白为什么 scanf 只取第一个值。我确定我已经正确地复制了代码,但是没有列出这个的勘误表,所以我想知道你们中的任何一位大师是否可以解释它为什么不起作用以及如何修复它。