扫描集
扫描集为一个字符集合,用来匹配期待输入的字符。对于scanf匹配输入内容时,可以使用扫描集灵活地进行字符串截取输入。
扫描集以 %
开头,用 []
包含字符集。如扫描集 %[abc]
, %[a-z]
, %[^abc]
, %[^a-z]
,其中 ^
表示求反集。
实例
基础
1 2 3 4 5 6 7 8 9 10 11 12
| #include <stdio.h> int main() { char str[100]={0}; scanf("%s",str); printf("str=%s",str); scanf("%[^\n]",str); printf("str=%s",str); return 0; }
|
1 2 3 4 5 6 7 8 9 10 11
| #include <stdio.h> void main() { char str[100]={0}; scanf("%[A-Za-z]",str); printf("str=%s",str); return 0; }
|
提取ip地址
1 2 3 4 5 6 7 8
| #include <stdio.h> int main() { const char url[] = "<sip:tom@172.18.1.133>"; char ip[20]={0}; sscanf(url, "%*[^@]@%[^>]", ip); printf("%s", ip); return 0; }
|
提取名字
1 2 3 4 5 6 7 8
| #include <stdio.h> int main() { const char s[] = "iios/12DDWDFF@122"; char name[20]; sscanf(s, "%*[^/]/%[^@]", name); printf("%s", name); return 0; }
|