我刚开始尝试学习C编程,我真的想了解它是如何工作的。
我想编写一个程序来计算我按ENTER,SPACE和TAB的次数。以下代码有效:
while( (text = getchar()) != EOF){
if(text == '\n')
++newlines;
if(text == ' ')
++blanks;
if(text == '\t')
++tabs;
}
但是,以下代码不起作用:
text = getchar();
while( text != EOF){
if(text == '\n')
++newlines;
if(text == ' ')
++blanks;
if(text == '\t')
++tabs;
}
我想知道为什么它在循环中分配变量时有效,但不在它之外。
如果我将它分配到循环外并在控制台中运行程序,程序只需在按Enter后停止。
答案 0 :(得分:3)
在第一种情况下,每次运行循环时都会获得一个新字符。 while
循环将在每次到达循环结束时重新检查条件。在第二种情况下,您仍然每次都要检查,但值不会改变 - 它与您开始时的值相同。所以,如果第一个角色不是EOF ......那么......你无限循环!
您可以通过在再次迭代之前重新更新text
来修复第二种情况:
text = getchar();
while( text != EOF){
if(text == '\n')
++newlines;
if(text == ' ')
++blanks;
if(text == '\t')
++tabs;
text = getchar(); //added
}