C語言中scanf函式的使用注意

2021-10-22 17:18:15 字數 1319 閱讀 5218

c語言使用scanf函式時,scanf是從緩衝區進行取值的,連續輸入的資料都是整型或者實型資料時,可以用空格,tab鍵或者回車隔開,如下:

int num1 ;

double num2 ;

scanf (

"%d%lf"

,&num1,

&num2)

; printf (

"num1 = %d,num2 = %lf"

,num1,num2)

;

如果先要輸入整型或實型資料,再輸入字元資料,則要注意,這時在控制台輸入」1空格2回車「,字元c列印的是空格,因為此時緩衝區依次儲存的是『1』,『 』,『2』,『\n』,scanf將緩衝區的『1』賦值給num,將『 』賦值給c,所以輸出c為空格

int num ;

char c ;

scanf (

"%d%c"

,&num,

&c);

printf (

"num1 = %d,c = %c"

,num,c)

;

1 2

num1 = 1,c = program ended with exit code: 0

那麼我們如何解決呢,上**,看結果,**中的rewind(stdin)函式和fflush(stdin)函式作用都是相同的,用其中乙個就行,相當於清空緩衝區

int num ;

char c ;

printf (

"請輸入乙個整型數字:\n");

scanf (

"%d"

,&num)

; rewind (

stdin);

// fflush(stdin);

printf (

"請輸入乙個字元:\n");

scanf (

"%c"

,&c)

; printf (

"num1 = %d,c = %c\n"

,num,c)

;

請輸入乙個整型數字:

34請輸入乙個字元:

rnum1 = 34,c = r

program ended with exit code: 0

語法上 ,rewind(stdin) 是把檔案指標迴繞到檔案起始處,fflush(stdin) 是把檔案輸入緩衝區清0,stdin 是標準輸入裝置(輸入流),通常是鍵盤。(但也可以是通過轉向的文字檔案。)

C語言中scanf函式

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

C語言中的scanf函式

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

C語言中scanf函式的實現

在scanf.c檔案中,可以看到scanf函式,如下 include include include loc incl.h int scanf const char format,對於va list va start va end等在stdarg.h標頭檔案中定義的巨集,都已經在 stdarg.h標...