1. scanf函數(shù)得一般形式:
scanf(格式控制,地址表列):
“格式控制”得含義同printf函數(shù)。“地址表列”是由若干個(gè)地址組成得表列,專業(yè)是變量得地址,或字符串得首地址。
2. scanf函數(shù)中得格式聲明
與printf函數(shù)中得格式聲明相似,以%開始,以一個(gè)格式字符結(jié)束,中間專業(yè)插入附加得字符。
例3.5中得scanf函數(shù)是比較簡(jiǎn)單得。專業(yè)把scanf函數(shù)改寫成以下形式:
scanf( a=%f,b=%f,c=%f”,&a,&b,8c);
在格式字符串中除了有格式聲明%f以外,還有一些普通字符(有“a=”“b=”“c=”和“,”)。
表3.8和表3.9列出scanf函數(shù)所用得格式字符和附加字符。它們得用法和printf函數(shù)中得用法差不多。
這兩個(gè)表是猥瑣備查用得,不必死記,并始時(shí)會(huì)用比較簡(jiǎn)單得形式輸入數(shù)據(jù)即可
3.使用scanf函數(shù)時(shí)應(yīng)注意得問題
(1) scanf函數(shù)中得格式控制后面應(yīng)當(dāng)是變量地址,而不是變量名。例如,若。和b為整型變量,如果寫成
scanf(%f%f%f”,a,b,c);
是不對(duì)得。應(yīng)將“a,b,c”改為“&.a,&.b,&c”。許多初學(xué)者常犯此錯(cuò)誤。
(2)如果在格式控制字符串中除了格式聲明以外還有其他字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)得位置上應(yīng)輸入與這些字符相同得字符。如果有
scanf( a=%f,b=%f,c=%f”,&a,&b,8c);
在輸入數(shù)據(jù)時(shí),應(yīng)在對(duì)應(yīng)得位置上輸入同樣得字符。即輸入
a=1,b=3,c=2 (注意輸入得內(nèi)容)
如果輸入
132
就錯(cuò)了。因?yàn)橄到y(tǒng)會(huì)把它和scanf函數(shù)中得格式字符串逐個(gè)字符對(duì)照檢查得,只是在%f得位置上代以一個(gè)浮點(diǎn)數(shù)。
注意:在“a=1”得后面輸入一個(gè)逗號(hào),它與scanf函數(shù)中得“格式控制”中得運(yùn)號(hào)對(duì)應(yīng)。如果輸入時(shí)不用逗號(hào)而用空格或其他字符是不對(duì)得。
(3)在用“%c”格式聲明輸入字符時(shí),空格字符和“轉(zhuǎn)義字符”中得字符都作為有效字符輸入,例如:
scanf("%c%c%c",&.c1,&c2,&c3);
在執(zhí)行此函數(shù)時(shí)應(yīng)該連續(xù)輸入3個(gè)字符,中間不要有空格。如:
abc? (字符間沒有空格)
若在兩個(gè)字符間插入空格就不對(duì)了。如:
a b c
系統(tǒng)會(huì)把第1個(gè)字符'a'送給cl;第2個(gè)字符是空格字符,送給c2;第3個(gè)字符‘b'送給c3。而并不是把'a’送給cl,把'b'送給c2,把'c'送給c3。
提示:輸入數(shù)值時(shí),在兩個(gè)數(shù)值之間需要插入空格(或其他分隔符),以使系統(tǒng)能區(qū)分兩個(gè)數(shù)值。在連續(xù)輸入字符時(shí),在兩個(gè)字符之間不要插入空格或其他分隔符(除非在scanf函數(shù)中得格式字符串中有普通字符,這時(shí)在輸入數(shù)據(jù)時(shí)要在原位置插入這些字符),系統(tǒng)能區(qū)分兩個(gè)字符。
(4) 在輸入數(shù)值數(shù)據(jù)時(shí),如輸入空格、回車、Tab鍵或遇非法字符(不屬于數(shù)值得字符),認(rèn)為該數(shù)據(jù)結(jié)束。例如:
scanf(”%d%c%f",&a,&b,&.c);
若輸入
1234a 1230.26
ab c
第1個(gè)數(shù)據(jù)對(duì)應(yīng)%d格式,在輸入1234之后遇字符'a',因此系統(tǒng)認(rèn)為數(shù)值1234后已沒有數(shù)字了,第1個(gè)數(shù)據(jù)應(yīng)到此結(jié)束,就把1234送給變量a。把其后得字符'a'送給字符變量b,由于%c只要求輸入一個(gè)字符,系統(tǒng)判定該字符已輸入結(jié)束,因此輸入字符a之后不需要加空格。字符’a'后面得數(shù)值應(yīng)送給變量c。如果由于疏忽把1230.26錯(cuò)打成1230.26,由于123后面出現(xiàn)字母o,就認(rèn)為該數(shù)值數(shù)據(jù)到此結(jié)束,將123送給變量c,后面幾個(gè)字符沒有被讀入。