C語言中的Scanf輸入函式

2021-10-08 20:10:45 字數 1060 閱讀 1270

1:問題描述

c語言中的scanf函式如果讀取到正確的值,也就是和scanf函式中提前設定的值的型別一致時,該值可以正確被讀入。並且scanf函式的返回值是1,通過對scanf函式的返回值的判斷就可以知道scanf函式是否讀入了正確的值。

2:程式**

本次使用的編譯器是vscode,測試程式是乙個把華氏溫度轉成攝氏溫度以及開氏溫度。程式**如下:

#include

void

temperatures

(double tem1)

;double tem2,tem3;

intmain

(void

)printf

("done\n");

//getchar();

getchar()

;return0;

}void

temperatures

(double tem1)

getchar()函式說明,用於讀取換行符,防止控制台退出。在測試過程發現,當輸入正確的華氏溫度值時,程式測試執行成功。當輸入乙個字母,如a時,程式秒退。

3: 解決辦法

將程式**中的getchar()語句注釋取消,發現程式執行成功。

4:問題分析

c語言中的scanf函式讀取時,引號中的資料型別一定要和實際輸入資料的資料型別保持一致。在這裡,由於輸入的是乙個字元型資料,scanf函式並沒有讀取到這個資料,而是把這個資料放回了輸入區。由於讀取錯誤,所以scanf函式的返回值不是1。而這個字元型資料被getchar()函式讀取。在輸入乙個換行符時,繼續被getchar()函式讀取,因此想要控制台不秒退,還需要再次執行一次getchar()函式。

5:拓展

scanf函式讀取資料時一般從資料的非空白字元開始,一直到非空白字元或者字段結尾才開始結束。空白字元主要包括:換行符,製表符,空格。這也不難解釋在輸入數字時,在數字前面使用空格或者使用換行符也是可行的。

C語言中scanf函式

scanf 函式每次讀取乙個字元,跳過所有的空白字元,直至遇到第1個非空白字元才開始讀取。因為要讀取整數,所以 scanf 希望發現乙個數字字元或者乙個符號 或 如果找到乙個數字或符號,它便儲存該字元,並讀取下乙個字元。如果下乙個字元是數字,它便儲存該數字並讀取下乙個字元。scanf 不斷地讀取和儲...

C語言中的scanf函式

思考 如果,我們想拿到使用者輸入的東西,怎麼辦?解決 我們需要使用 scanf 這個函式 1.scanf 的作用 在程式執行到 scanf 的時候,接收使用者輸入的一些資料,並儲存在變數之中 2.scanf 的語法 scanf 格式控制字串 變數位址列表 語義 格式控制字串裡寫佔位符,佔位符用來接收...

C語言中正確使用輸入函式scanf

c語言中輸入函式scanf使用不當,會出現各種錯誤,正確使用,會提高效率,現把一些注意事項,正確的使用方法和經驗分享給大家.在c語言中空白字元括 空格 換行 n 回車 r 水平製表符 t 換頁符 f 垂直製表符 v 在scanf讀取的乙個引數是數時,開始輸入的空白字元會被忽略,讀取數字直到遇到第一字...