函數(shù)聲明
int scanf(const char *format, ...);
說(shuō)明
<返回值> scanf ("<格式化字符串>", <參數(shù)表>);
返回值
scanf 返回成功讀入的變量個(gè)數(shù),讀到文件末尾或發(fā)生錯(cuò)誤返回EOF外盯。
如
int n, m;
scanf("%d%d", &n, &m);
scanf("%d%d", &n, &m);
輸入
3 4
3
^Z
/*Windows系統(tǒng)終端下以^Z即Ctr+Z代表EOF*/
返回值為 分別為 2 和 1
又如
int n;
scanf("%d", &n);
輸入
^Z
返回值為 -1 ( -1 即 EOF 的值麸澜, 使用 printf 即可看到)
格式化字符串
格式
%[width][modifiers]
說(shuō)明
每個(gè)%分別對(duì)應(yīng)控制參數(shù)表中每個(gè)變量的輸入格式(%%除外挺尿, * 亦對(duì)應(yīng)一個(gè)變量);
除%引導(dǎo)的部分外炊邦,可加入任意輸入格式有關(guān)的字符编矾;
width指定了在當(dāng)前讀取操作中讀取的最大字符數(shù),可省略馁害;
modifiers | 參數(shù)類型 | 含義 |
---|---|---|
d | char型窄俏,int型 | 讀入一個(gè)十進(jìn)制整數(shù) |
o | int型,unsigned int型 | 讀入一個(gè)八進(jìn)制整數(shù) |
x,X | int型碘菜,unsigned int型 | 讀入一個(gè)十六進(jìn)制整數(shù) |
u | unsigned int型 | 讀入一個(gè)十進(jìn)制整數(shù) |
lld | long long型 | 讀入一個(gè)十進(jìn)制整數(shù) |
llu | unsigned long long型 | 讀入一個(gè)十進(jìn)制整數(shù) |
c | char型凹蜈,int型 | 讀入單個(gè)字符,若 width 不為 1 忍啸,則讀取 width 個(gè)字符并存儲(chǔ)在數(shù)組中連續(xù)位置仰坦。但末尾不會(huì)追加空字符。 |
s | char *型 | 讀入一個(gè)字符串计雌,讀到空白符結(jié)束悄晃,末尾追加 '\0' |
f | float型 | 讀入一個(gè)十進(jìn)制實(shí)數(shù) |
lf | double型 | 讀入一個(gè)十進(jìn)制實(shí)數(shù) |
e,E | float型,double型 | 用指數(shù)形式讀入一個(gè)十進(jìn)制實(shí)數(shù) |
g,G | float型凿滤,double型 | 讀入一個(gè)十進(jìn)制小數(shù) |
p | void *型 | 讀入一個(gè)指針 |
[ ] | / | 掃描字符集合 |
% | 不轉(zhuǎn)換參數(shù) | 讀入一個(gè)% |
參數(shù)表
參數(shù)表中形參的數(shù)量和類型與格式化字符串相適應(yīng)妈橄,否則讀入可能發(fā)生異常
每個(gè)形參用逗號(hào)( , )隔開
示例
#include<stdio.h>
int main()
{
double a, b;
int d, e;
char ch, c[100];
scanf("%d%d", &d, &e); /*兩個(gè)數(shù)字之間應(yīng)當(dāng)用空白符分開*/
scanf("(%d,%d)", &d, &e);
scanf("(%d,%d)", &d, &e);
scanf("(%d,%d)", &d, &e);
scanf("%2d%d", &d, &e);
scanf("%lf%lf", &a, &b);
scanf("%4lf%lf", &a, &b); /*注意小數(shù)點(diǎn)占一個(gè)字符*/
scanf("%c", &ch);
scanf("Hello World%s", c);
scanf("%11c", c);
return 0;
}
輸入示例
3 3 /*變量中值分別為 3 和 3*/
(3,3) /*變量中值分別為 3 和 3*/
( 3 , 3 ) /*多空格可以正常讀入庶近,為 3 和 3,但不規(guī)范*/
(3,,3) /*多逗號(hào)讀入出錯(cuò)眷蚓,第一個(gè)變量為 3 而第二個(gè)則無(wú)法成功讀入*/
2019 /*變量中值分別為 20 和 19*/
3.14 3.14 /*變量中值分別為 3.14 和 3.14*/
3.143.14 /*變量中值分別為 3.14 和 3.14*/
a /*變量中值為 'a' (實(shí)際儲(chǔ)存為字符'a'的Ascii碼)*/
Hello WorldHelloWorld /*變量中值為 HelloWorld\0 (以'\0'作為串結(jié)束符)*/
Hello World /*變量中值為 Hello World (沒有串結(jié)束符鼻种,不能直接printf)*/
by sdust weilinfox