scanf的一些技巧

2022-03-10 16:52:56 字數 744 閱讀 9345

一、scanf和gets

1.不同點:

char string[50];

scanf("%s",string); //當遇到回車,空格和tab鍵會自動在字串後面新增'\0',但是不能接受回車,空格和tab鍵,他們仍會留在輸入的緩衝區中。

gets(string); //遇到回車認為輸入結束,並用'\n'替代 '\0'.回車鍵不會留在輸入緩衝區中

2.相同點:

字串接受結束後自動加'\0'。

二、scanf("%c",&c) 與 scanf(" %c",&c)

後者只是在%前多了個空格,似乎沒有什麼區別,但使用起來區別是很大的。scanf()作單字元輸入時規定只接收乙個字元,但它卻把回車符也作為字元對待的。這就造成程式中只有乙個輸入字元的scanf()語句時,問題還不大,但如果後面還跟著第二個scanf()字元輸入語句,這個scanf()就把前面輸入的回車符當作輸入字元了。這就在輸入邏輯上造成了混亂,達不到人們預期的願望。有了這個空格,因為scanf()是跳過空格讀字元的,就迴避了這個問題。實踐證明,這個空格放在%c後面也不能達到目的。應當說,這也是比較巧妙的應用!

三、scanf("%d",&n) 與 scanf("%d ",&n)

這個是利用了上面二中的方法,如果程式scanf("%d",&n)之後要讀char,會把讀入n之後的空格讀進ch,而scanf("%d ",&n)這裡d後面多個空格,就相當於後面%c前多了個空格,不管是scanf("%c",&ch)還是ch=getchar(),都可以跳過那個回車。

學習scanf的一些摘錄

scanf 函式是格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。其呼叫格式為 scanf 格式化字串 位址表 格式化字串包括以下三類不同的字元 1 格式化說明符 格式化說明符與printf 函式中的格式說明符基本相同。但和printf 函式中格式字串的用法有一些小區別。我們來看下面這個表。...

android UI 的一些技巧

一 去掉edittext的背景顏色 android background null 二 listview 修改某行的值,因為一些功能邏輯,需要修改listview某行的值,那麼就可通過下面的方法,獲取到對應的listview的某行,然後修改。private void updateview int i...

MySQL的一些技巧

使用rand 獲取隨機結果 在order by語句中可按照如下的隨機順序檢索資料行 mysql select from tbl name order by rand order by rand 同 limit 的結合從一組列中選擇隨機樣本很有用 mysql select from table1,ta...