C語言 scanf與正則表達式的搭配及應用
阿新 • • 發佈:2019-03-06
num 數字 一個數 style 常用 輸出 其中 字符 小寫字母
前言
當輸入流是一個字符串,我們需要在其中提取我們所需要的數值時,正則表達式就顯得很有用。
如果我們能在輸入的時候,就過濾掉無用信息,就可以省去後期提取數值的步驟。
使用方法
- scanf("%ns", str);
表示讀取長度為n的字符串
輸入:123456
輸出str:123 ( 以scanf("%3s", str);為例 )
- scanf("%[a-z]", str);
表示讀取a-z的小寫字母,出現非a-z的小寫字母,立即停止讀取。
輸入:abcd123
輸出str:abcd
- scanf("%*[a-z]%s", str);
%*[ ]表示過濾掉滿足括號內條件的字符串 %[ ]表示讀取
輸入:abcd123
輸出str:123
- scanf("%[^0-9]", str);
^表示非,^0-9表示非0-9的一切字符,因此是遇到0-9就立即停止讀取。
輸入:abcd123
輸出str:abcd
PS:%[^\n] 表示 讀取回車符以前的所有字符,常用於讀取含空格的字符串。
%[^ ] 表示 讀取空格符以前的所有字符。
- scanf("%*[^\n]%d", &num);
表示過濾掉回車以前所有的字符,並將回車符的下一個數字賦給num。
輸入:abcd\n12
輸出num:12
PS:%*[^ ]表示過濾空格以前的所有字符
C語言 scanf與正則表達式的搭配及應用