scanf中一種很少見但很有用的轉換字符:[...]和[ ^...]。
#include < stdio.h > main() { char strings[100]; scanf("%[1234567890]", strings); printf("%s", strings); return 0; }
運行,輸入:1234werew後,結果是:1234。
通過運行可以發現它的作用是:如果輸入的字符屬於方括號內字符串中某個字符,那麼就提取該字符;如果一經發現不屬於就結束提取。該方法會自動加上一個字符串結束符到已經提取的字符後面。
scanf("%[^1234567890]",strings); 它的作用是:如果一經發現輸入的字符屬於方括號內字符串中某個字符,那麼就結束提取;如果不屬於就提取該字符。該方法會自動加上一個字符串結束符到已經提取的字符後面。
注意:方括號兩邊不能空格,如:scanf("%[ 1234567890 ]",strings); scanf("%[ ^1234567890]",strings); 不讓空格也會算在裡面的。
用這種方法還可以解決scanf的輸入中不能有空格的問題。只要用scanf("%[^\n]",strings); 就可以了。