C語言中scanf()函數(shù)是從標(biāo)準(zhǔn)輸入流stdin中讀取信息的,很多時(shí)候調(diào)用scanf()函數(shù)卻得不到想要的信息,可以從這方便考慮解決問題。 fflush(stdin); 是個(gè)不錯(cuò)的方法。 想要用scanf()函數(shù)讀入空白字符,回車符和換行符這些字符,就需要提到scanf()函數(shù)的格式說明符: 轉(zhuǎn)換字符(就是%后跟的部分) a 讀浮點(diǎn)值(僅適用于 C99) A 讀浮點(diǎn)值(僅適用于 C99) c 讀單字符 d 讀十進(jìn)制整數(shù) i 讀十進(jìn)制、八進(jìn)制、十六進(jìn)制整數(shù) e 讀浮點(diǎn)數(shù) E 讀浮點(diǎn)數(shù) f 讀浮點(diǎn)數(shù) F 讀浮點(diǎn)數(shù)(僅適用于 C99) g 讀浮點(diǎn)數(shù) G 讀浮點(diǎn)數(shù) o 讀八進(jìn)制數(shù) s 讀字符串 x 讀十六進(jìn)制數(shù) X 讀十六進(jìn)制數(shù) p 讀指針值 n 至此已讀入值的等價(jià)字符數(shù) u 讀無符號(hào)十進(jìn)制整數(shù) [ ] 掃描字符集合 % 讀 % 符號(hào)(百分號(hào)) 附加格式說明字符表修飾符說明 L/l 長度修飾符 輸入"長"數(shù)據(jù) h 長度修飾符 輸入"短"數(shù)據(jù) W 整型常數(shù) 指定輸入數(shù)據(jù)所占寬度 * 表示本輸入項(xiàng)在讀入后不賦值給相應(yīng)的變量 上面提到的 掃描字符集合 []就是關(guān)鍵,它使得讀入空白字符成為可能。如下所示: #include <stdio.h> #include <string.h> int main() { } 上面代碼使得空格,制表符作為輸入成為可能,其中 %[^\n] 表示除了換行符\n之外的字符都接收。 如想要接收換行符\n作為輸入,只需要在掃描字符集中添加\n即可。 注意: 回車符是特殊字符,在scanf("%[^\n]", str)之后需要增加scanf("%c", newline),消除回車符。否則,只要接收到一個(gè)回車符scanf會(huì)不停止運(yùn)行。 |
|