我剛開始嘗試學習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