C語言 scanf()函數(shù)的數(shù)據(jù)輸入操作
(1)輸入多個(gè)數(shù)據(jù)的分隔處理。如果在格式字符串中不包含除了格式指示符之外的普通字符,則在輸入多個(gè)數(shù)據(jù)時(shí),可以使用空格隔開,或者按Tab鍵分開,或者按Enters隔開。例如:
scanf ("%d%d",&a,&b);
假設(shè)要給a輸入12,給b輸入24,則正確的輸入操作為: 12口24/
或者: 12/
24/
或者: 12 24/ (輸入12后,按下Tab鍵)。
(2)當(dāng)“格式字符串”中出現(xiàn)普通字符,務(wù)必原樣輸入。例如:
scanf("%d,%d",&a,&b);
假設(shè)給a輸入12,給b輸入24,正確的輸入操作為: 12, 24/
(3)當(dāng)scanfO函數(shù)中的格式字符串中出現(xiàn)轉(zhuǎn)義字符(如\n ),系統(tǒng)并不把它當(dāng)轉(zhuǎn)義字符來解釋,從而產(chǎn)生一個(gè)控制操作,將其視為普通字符,所以也要原樣輸入。例如:
scanf("a=%d.b=%d\n",&a.&b);
假設(shè)給a輸入12,給b輸入24,正確的輸入操作為:
a*12, b=24\n/
(4)輸入數(shù)據(jù)時(shí),遇到以下情況,系統(tǒng)認(rèn)為該數(shù)據(jù)輸入結(jié)束:
①遇到空格,或者按Enters,或者按Tab鍵。
②遇到輸入域?qū)挾冉Y(jié)束。例如“%3d”,只取3列。
③遇到非法輸入。如在輸入數(shù)值數(shù)據(jù)時(shí),遇到字母等非數(shù)值符號(hào)(數(shù)值符號(hào)僅由數(shù)字字符0~9、小數(shù)點(diǎn)和正負(fù)號(hào)構(gòu)成)。例如:
int a,b;
scanf ("%d",&a);
printf("a=%d\n",a,b);
程序執(zhí)行時(shí),當(dāng)輸入:
123a5/
則輸出:
a=123, b=-858993460
系統(tǒng)為變量a讀取數(shù)據(jù)時(shí),當(dāng)讀取了 “123”,其后面是字符“a”,這不是一個(gè)合法的數(shù)值字符, 所以認(rèn)為本次輸入結(jié)束。
(5)使用格式說明符“%c”輸入單個(gè)字符時(shí),空格和轉(zhuǎn)義字符均作為有效字符被輸入。例如:
scanf("%c%c%c".&cl,&c2,&c3);
printf ( "chl-%c #ch2~%c ,ch3—%c\n".chl,ch2 ,ch3);
程序執(zhí)行時(shí),若輸入ACDBCIC/,則系統(tǒng)將字母‘A’賦值給c1,空格賦值給c2,字母‘B’賦值給c3。
點(diǎn)擊加載更多評(píng)論>>