我正在通过Kernighan& amp; Ritchie书,并改编了他们的代码以创建我自己的程序。只有在输入一个字符三行输出后才能得到。前两行表示行数为0,然后行数为1.我显然宁可直接输入一行。我做错了什么?
int main()
{
int stor, lines;
lines = 0;
while((stor = getchar()) != EOF){
if(stor == '\n')
++lines;;
printf("Amount of lines:%d\n", lines);
}
return 0;
答案 0 :(得分:2)
您打印出while
循环内部的行数,该循环运行您输入的每个字符。因此,对于您按下的每个键,您将得到一行输出。
将printf
移到while
循环体后面,它最后只打印一次。
#include <stdio.h>
int main()
{
int stor, lines;
lines = 0;
while((stor = getchar()) != EOF) {
if(stor == '\n')
++lines;
}
printf("Amount of lines:%d\n", lines);
return 0;
}
答案 1 :(得分:0)
在这里,您尝试计算输入中新行字符\n
的总数。
为此,只有在完成输入处理后才需要打印\n
的总数。因此,您需要将printf
移到while循环之外。
int main()
{
int stor, lines;
lines = 0;
while((stor = getchar()) != EOF) {
if(stor == '\n')
++lines;
/* Move the below printf outside the while loop */
/* printf("Amount of lines:%d\n", lines); */
}
printf("Amount of lines:%d\n", lines);
return 0;
}