C中用scanf 時應注意的一些問題

2022-04-05 17:12:50 字數 1876 閱讀 1037

最近在做題時遇到了scanf()的一些問題,下面說一下,scanf()中一些需要注意的地方:

先說一下scanf()的格式:

scanf(「格式控制字串」, 位址表列);

0、格式字串一般形式如下:

%[*][輸入資料寬度][長度]型別

其中有方括號的項為任選項,舉個*的栗子:

1、scanf函式中沒有精度控制,而printf()可以,如下:

2、在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔則可用空格,tab或回車作間隔。c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束,如下:

其中資料結束在d,所以輸出123

3、在輸入字元資料時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元,如下:

其中a為d,b為空格,c為e

4、若想在輸入字元時用空格隔開則這樣寫:

注:如果輸入的是整形等非字元型資料,根據2、可知道不須這麼寫,因為空格會被視為非格式串。

5、scanf()中%s和%c的區別:

首先宣告:在鍵盤中敲入字元後,字元會首先儲存在鍵盤緩衝區中供scanf函式讀取(scanf,getchar等函式是讀取緩衝區,getch函式是讀取的控制台資訊,即為直接從鍵盤讀取)。另外特別注意鍵盤上敲入回車實際為「\r\n」,但儲存到緩衝區時候會捨棄『\r』而只儲存\n.例如我們敲入字元「12345回車」,緩衝區內儲存的為「12345\n」。

①對於scanf以%s格式輸入時候,「空格、換行符、tab」等是作為兩個資料的分隔符存在的,即分隔符前後是兩個資料,讀入時候分隔符不讀入。

②對於scanf以%c格式輸入時候,「空格、換行符、tab」等是正常字元。

舉個栗子:

「adc」存進了字元陣列a,%s視空格為分隔符,但是空格存進了緩衝區,%c視空格為正常字元讀進了c。

再來個栗子:

若讓你輸入如下所示n行n列的字元如:

abcdef

ghi則應用%s,而不是%c,**如下

本文參考自

APP前端開發時應注意的一些問題

2 注意html5標籤在前端開發中的使用 3 前端製作要捨棄css float屬性 在專案開發過程中可以會遇到內容排列顯示的布局,假如你遇見這樣的視覺稿,建議你放棄float,可以直接使用display inline block。5 了解前端開發的自適應布局模式 在編寫css時,前端工程師把容器 不...

在做APP前端開發時應注意的一些問題

2 注意html5標籤在前端開發中的使用 3 前端製作要捨棄css float屬性 在專案開發過程中可以會遇到內容排列顯示的布局,假如你遇見這樣的視覺稿,建議你放棄float,可以直接使用display inline block。5 了解前端開發的自適應布局模式 在編寫css時,前端工程師把容器 不...

scanf的一些技巧

一 scanf和gets 1.不同點 char string 50 scanf s string 當遇到回車,空格和tab鍵會自動在字串後面新增 0 但是不能接受回車,空格和tab鍵,他們仍會留在輸入的緩衝區中。gets string 遇到回車認為輸入結束,並用 n 替代 0 回車鍵不會留在輸入緩衝...