容易被忽略的輸入和輸出

在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’的好習慣,這樣纔不會出現一些本不應該出現的錯誤。

發佈了95 篇原創文章 · 獲贊 36 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章