在C語言裏,我們經常用scanf作爲輸入語句,用printf輸出。那麼關於輸入和輸出,你到底瞭解多少呢?
一、關於“&”
首先我們來看一容易被忽略的輸入和輸出
#include <stdio.h>
int main()
{
printf("Hello world!");
while (1) ;
return 0;
}
運行之後的結果是什麼呢?是“Hello world!”麼?當然不是。當我們運行了之後,會發現什麼都不打印,並且陷入死循環。可能有人要問了,爲什麼不打印“Hello world!”呢?這便是我要給大家介紹的printf的一個特點。
printf是一個行緩衝函數,並且printf與scanf使用同一個緩衝區。先寫到緩衝區,當滿足一定的條件之後,纔會將緩衝區的內容輸出。而這裏需要滿足的一定條件如下:
①緩衝區滿
②寫入的字符裏有’\n’
③手動刷新緩衝區
④調用scanf,需要從緩衝區讀取數據
⑤程序退出
針對④,printf與scanf使用同一個緩衝區,當使用scanf時,會吧printf在緩衝區的數據清出來,於是可以輸出。針對⑤,在程序退出時,會把緩衝區打掃乾淨,同樣會清緩衝區,在清緩衝區的過程中會輸出。
所以希望我們大家在使用printf時,養成加’\n’的好習慣,這樣纔不會出現一些本不應該出現的錯誤。