int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
有了這個代碼,printf的等待直到我按下輸入則在該printf的等待輸入
打印所有在同一時間順序SS值等。有人可以解釋這種行爲嗎?
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
有了這個代碼,printf的等待直到我按下輸入則在該printf的等待輸入
打印所有在同一時間順序SS值等。有人可以解釋這種行爲嗎?
printf
而不是等待它是getchar
。 getchar
在場景後面使用緩衝區。當該緩衝區爲空時,getchar
將從標準輸入讀取1行,並且然後返回第一個字符。如果它不爲空,它將立即從緩衝區返回下一個caracter。
這意味着getchar
將在您第一次致電時等待。因此,您的printf
永遠不會執行,直到您按enter
這與我必須按什麼輸入每次我想要打印的東西有什麼關係。我不明白你的解釋 –
@DogusUral這意味着你的循環條件中的'getchar'被阻塞,直到你按下回車鍵,'printf'纔會被執行,直到你按下回車鍵。 – litelite
printf與等待行爲無關......它是getchar()。但首先嚐試清理你的項目並重建它...然後再試一次。 –
有沒有辦法爲getchar()禁用輸入緩衝流? –