(1)簡介:
scanf函式是c語言當中非常重要的格式化輸入函式
其函式原型為:int scanf(const char *format, ...);
其函式返回值:成功格式化解析的個數
其呼叫格式為:scanf("《格式化字串》", 《參量表》);
(2)轉換說明:
轉換格式為:%[*][寬度][型別長度]型別
除了最後的型別之外都是可選的欄位
轉換修飾符
修飾符意義
*滯後賦值;示例:"%*d"
digit(s)
z最大欄位寬度;在達到最大欄位寬度或者遇到第一個空白字元時(不管哪個先發生都一樣)停止對輸入項的讀取;示例:"%10s"
hhb把整數讀作signed char或unsigned char;示例:"%hhd" "%hhu"
llb把整數讀作long long或unsigned long long(c99);示例:"%lld" "%llu"
h,l或l
"%hd"和"%hi"指示該值將會儲存在一個short int中。"%ho"、"%hx"和"%hu"指示該值將會儲存在一個unsigned short int中。"%ld"和"%li"指示該值將會儲存在一個long中。"%lo"、"%lx"和"%lu"指示該值將會儲存在一個unsigned long中。"%le"、"%lf"和"%lg"指示該值以double型別儲存。將l(而非l)與e、f和g一起使用指示該值以long double型別儲存。如果沒有這些修飾符,d、i、o和x指示int型別,而e、f和g指示float型別;
轉換說明符
轉換說明符
意義%c
把輸入解釋稱一個字元
%d把輸入解釋稱一個有符號十進位制整數
%e,%f,%g,%a
把輸入解釋稱一個浮點數(%a是c99標準)
%e,%f,%g,%a
把輸入解釋稱一個浮點數(%a是c99標準)
%i把輸入解釋稱一個有符號十進位制整數
%o把輸入解釋稱一個有符號八進位制整數
%p把輸入解釋稱一個指標(一個地址)
%s把輸入解釋稱一個字串,輸入內容以第一個非空白字元作為開始,並且包含直到下一個空白字元的全部字元
%u把輸入解釋稱一個無符號十進位制整數
%x,%x
把輸入解釋稱一個無符號十六進位制整數
字符集合
(3)高階用法:
網上已經有很多部落格將scanf的常用方法說的非常詳細了,本篇部落格不再詳細介紹。
1。捕獲規則
在出現一個轉換說明符時,scanf函式會忽略前面的所有空白字元(除了%c),然後再捕獲相應的資料型別,一直到最大長度或者出現空白字元
scanf("%d,%d", &a, &b);
允許的輸入格式為:1,2\n;1, 2\n;1,\n2\n;
不允許的輸入格式:1 ,2\n; \n1,2\n; 1,2\n;
2。% 字符集合
這個算scanf函式中比較高階一點的用法
裡面填寫需要捕獲的字符集合,例如
char buf[20];
scanf("%[abc]", buf); //輸入abcdabcd123, buf內容為abc
scanf函式匹配中的所有字元,直到找到一個非中的字元
中也可以填寫字元範圍,例如
[a-z] //捕獲包括字元從a到z的所有字元,直到找到一個非a-z的字元
[a-za-z] //捕獲所有字母
[0-9] //捕獲所有數字
[a-za-z0-9]捕獲所有字母和數字
[a-za-z0-9!]捕獲所有字母和數字並且捕獲!(感嘆號)
中如果第一字元為^符號則表示出現中的內容則停止捕獲,例如
[^a-za-z]捕獲非字母
[^0-9]捕獲非數字
3。scanf中的空格和\n
scanf中的空格的作用不僅僅是捕獲一個空格,它表示捕獲所有空白字元(空格,換行,製表符等)直到出現一個非空白字元(\n一樣),例如
我們想接受一個ip:埠的輸入
需要接受的輸入格式為:ip:埠,ip: 埠,ip : 埠,ip\n:\n埠
如果**為scanf("%d.%d.%d.%d:%d", &ip[0], &ip[1], &ip[2], &ip[3], &port);
則只能捕獲的格式:ip:埠,ip: 埠,ip:\n埠
如果我們將**改為scanf("%d.%d.%d.%d :%d", &ip[0], &ip[1], &ip[2], &ip[3], &port); // : 前面多了一個空格
則可以捕獲上述所有情況
4。scanf中的混合輸入字元和數字
在scanf當中混合輸入字元和數字是一個比較煩人的問題
如果我們直接編寫**為
1 #include 23int
main()
10return0;
11 }
第一次scanf("%c%d");沒有任何問題
第二次scanf("%c%d");字元會將上一次的\n給解析進來,就會出現了問題
解決方案1:
#include intmain()
return0;
}
解決方案2:
#include intmain()
return0;
}
未定義的方案(官方文件未定義,勿用):
#include intmain()
return0;
}
sort函式詳細講解
簡介 sort函式用於c 中,對給定區間所有元素進行排序,預設為升序,也可進行降序排序。sort函式進行排序的時間複雜度為n log2n,比冒泡之類的排序演算法效率要高,sort函式包含在標頭檔案為 include algorithm 的c 標準庫中。sort函式概述編輯 語法 sort start...
python函式詳細講解 Python函式詳解
函式的作用 1.提升 的重複利用率,避免重複開發相同 2.提高程式開發效率 3.便於程式維護 函式的定義 1.基本格式 def 函式名 函式功能 函式功能 呼叫函式 函式名 函式定義之後不會自動執行,必須在呼叫函式後函式才會執行 2.帶有引數的格式 def 函式名 引數,引數.函式功能 函式功能 呼...
scanf函式用法詳解
1.函式基本說明 函式名 scanf 功能 執行格式化輸入 用法 int scanf char format argument,scanf 函式是通用終端格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。其呼叫格式為 scanf 格式...