淺談c語言的scanf函數與printf函數(—)

初學c語言的小夥伴們最熟悉的函數恐怕就是scanf與printf了,並一定被這兩個函數的格式所折磨過,今天我們就來深入瞭解一下這兩個函數。

淺談c語言的scanf函數與printf函數(—)

首先我們來談一下scanf函數,scanf函數的格式如下scanf("輸入項",待輸入項)

輸入項表示你要在鍵盤中輸入的格式(格式這個詞是我認為最嚴謹也最合適的)

待輸入項一般是傳遞的一個地址,中間有一個逗號隔開,有許多新手會遺漏這個&符號,但由於編譯器又不會報警(或許有的編譯器會)或檢查出這個錯誤來,所以等程序出現問題時又滿臉委屈的到處問別人,先來談一下scanf函數的原理,scanf將輸入流按照其轉換說明存入待輸入項獲取的地址。嚴格來說,待輸入項傳遞的是一個地址,一般機器變量的地址時16進制的,但總歸是一個數據,所以我們傳遞的即使不是地址,在語法上也不會有任何問題。這也就是為什麼scanf在輸入數組或者指針時不需要加&因為他們本身就是一個地址.

淺談c語言的scanf函數與printf函數(—)

再來談一下scnaf返回值的問題,因為我認為scanf()返回值是最常用也是最有用的一部分了,首先scanf是一個返回int類型值的函數了。所以我們通常用來控制輸入的結束與錯誤,如while(scanf("%d",&m)==1)當我們不想繼續輸入時可以輸入一個字符來終止程序或者輸入有誤時不再執行循環裡面的程序,當scanf讀到不符合其轉換說明的程序時會返回0,當成功讀取數據時,會返回成功讀取數據個數的非0值。

淺談c語言的scanf函數與printf函數(—)

scanf的優點是能讀取任何數據,只有輸入對應的轉換說明即可,轉換說明和轉義序列讓scanf這個函數多才多藝,但也讓許多新手頭痛.再來談一下c語言輸入的問題,很多人都誤解為c語言的輸入是從鍵盤設備上直接獲取的。但其實不是

嚴格來說程序的輸入是從文件獲取的。有關c輸入的問題,還有printf函數我們下一次再談。

PS:很多人都反映c語言難學而且即使學過的人也反映跟沒學過一樣,所以從今天開始,我會做一組教程,關於c語言的,我們會陸續的將c語言中最難受的部分解決,希望我們能相處的愉快。如果喜歡記得關注。


分享到:


相關文章: