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的字元輸入格式會接收回車字元,在輸...