c c 使用scanf進行字元錄入時的格式控制

2021-10-05 07:04:19 字數 860 閱讀 3808

scanf在從鍵盤輸入字元中讀取時本身就可以規定一定的格式,比如如果輸入乙個日期:2020/04/21,而我們想要儲存的只有三個數字,那麼我們可以使用這樣的格式控制:

int year,month,day;

scanf

("%d/%d/%d"

,&year,

&month,

&day)

;

但是如果我們想以字串的形式儲存年月日就比較麻煩了,因為分隔符/會被當作字元直接讀取到變數year中,就不能夠得到我們想要的結果,我們就需要使用更加豐富的格式控制形式了。

(1)使用%[…] 掃瞄字元集合

scanf ("%[59ac]",a) 可以實現只有方括號內的字元形式的字元才是合法的,即只有5,9,a,c才可以錄入,遇到其餘字元均視為終止符。

還有如下格式:

scanf ("%[1-9]",a);只有數字可以錄入,其餘字元視為終止符。

scanf ("%[a-za-z1-9]",a);

以及:

scanf (

"%[^\n]"

,a)

^表示取非,除了換行以外的字元均可以被scanf讀取,包括空格符。

(2)%5s 控制錄入長度為5,後面若還有scanf,則從停止處開始錄入

(3)%*可以忽略某次錄入,只讀取而不儲存。

比如我們想要從輸入流:birthday=2020/04/21中獲取年份資訊2020並儲存,我們可以使用這樣的格式控制:

int

main()

其中%*[^=]讀取了等號前的字元並丟棄,%4s讀取等號後面長度為4的字元,也就是我們想要的年份資訊。

C C 中的scanf函式的使用注意點

要求是使用scanf輸入三個整型值,再依次輸出輸入的整型值。剛開始思路就是簡單定義三個整型變數,用scanf簡單將輸入值暫存輸出即可,和運 況如下 這裡,敲完 顯示scanf語句中的三個變數在這裡未初始化,嘗試除錯執行,情況如下 經查閱,得知scanf函式,與printf不同的是它要存入輸入值的位址...

使用QStringBuilder進行字串連線

in c performance qtqt labs chinese comments qstring和qbytearray提供了非常便利的operator 以允許你寫這樣的 qstring directory name qstring datafile directory qlatin1char ...

使用scanf字元輸入時遇到的問題

今天用scanf給一字元陣列迴圈複製時遇到了問題 include stdio.h int main a 9 0 printf s a return 0 發現scanf會被跳過,搜了一下網 原來scanf 或者getchar 是從標準輸入緩衝區中讀取輸入的資料,而 c的字元輸入格式會接收回車字元,在輸...