我正在做一本书中的练习,以制作一个计算空白制表符和换行符的程序。代码如下:
#include <stdio.h>
main()
{
int blanks, tabs, newlines = 0;
int c;
while ((c = getchar()) != EOF)
if (c ==' ')
++blanks;
if (c == 't')
++tabs;
if (c == 'n')
++newlines;
printf("n Blanks: %d. n Tabs: %d. n New lines: %d. n", blanks, tabs, newlines);
}
程序似乎检查了第一个if语句,发现它是真的,然后回到while循环的开头,为什么会发生这种情况,解决方案是什么?
kingvon@KingVon:~/Desktop/C$ ./a.out
counts blanks
but not tabs
or new lines
Blanks: 5.
Tabs: 0.
New lines: 0.
将{}添加到while循环中。如果使用不带{}的循环,它只循环它后面的第一行,但当使用{}时,它循环{}之间的所有代码。
while ((c = getchar()) != EOF){
if (c ==' ')
++blanks;
if (c == 't')
++tabs;
if (c == 'n')
++newlines;
};