我刚开始尝试学习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后停止。
在第二个文本永远不会改变或重新读取,所以你得到一个无限循环。 PS - 从不调用char变量“text”。 “文本”听起来像一个字符串变量或类似的。 – ebyrob
你不要在上面的代码中声明ANYWHERE的任何变量。你所做的就是给变量赋值。第一个和第二个示例的区别在于,第一个示例中的“getchar”位于循环内部。第二个在外面。在第二个例子中,如果您只读取一个字符,然后一遍又一遍地循环该字符,会发生什么?它永远不会是EOF,因此将永远运行。 –
感谢您的澄清,Sani!我编辑过它。 – Akitirija