這裏是我的鍛鍊1-13碼的「C程序設計語言」:C:爲什麼在這個代碼中「Enter」鍵觸發輸出?
#include <stdio.h>
int main()
{
int c, currentIndex, currentLength;
currentLength = currentIndex = 0;
while ((c = getchar()) != EOF){
if (c == '\t' || c == '\n' || c == ' '){
if (currentLength == 0){
continue;
}
printf("Length of word %d: ||", currentIndex);
for (int i = 0; i < currentLength; i++){
putchar('-');
}
putchar('\n');
currentLength = 0;
++currentIndex;
} else {
++currentLength;
}
}
return 0;
}
這樣我就可以編譯這個與./a.out運行它,但是當我按「Enter」開始新行('\ n')運行printf()和putchar()函數(並且''或'\ t'都不會觸發輸出)。 while循環沒有結束(它會像END-OF-FILE(CTRL-D)那樣結束),但我想知道爲什麼這些函數在被調用時會被調用。它可以防止一次輸入多行。下面是一個例子的它的輸出:
how long are these words
Length of word 0: ||---
Length of word 1: ||----
Length of word 2: ||---
Length of word 3: ||-----
Length of word 4: ||-----
只是要清楚,我只得到printf()和的putchar()的輸出,當我按下「Enter」鍵。 CTRL-D只是結束循環和程序。
您使用的是Windows嗎?它有不同的結局。它使用'\ r \ n' – Mark
不,我在Ubuntu 16.04上。 – jestivus