scanf函数之扫描集
参考网站
https://www.cnblogs.com/linzhehuang/p/6554506.html
%[string] // 只读取包含在[]中的字符
%[^string] // 读取除[]中字符以外的字符,^为取反的意思
下面给出示例及屏幕结果,示例中省略变量声明:
1 /* 第一个格式示例 */
2 puts("输入:");
3 scanf("%[abc]",str); // 除abc三个字符外,其他字符均会结束对变量的赋值
4
5 puts("输出:");
6 printf("str = %s",str);
输入:
abcdef
输出:
str = abc
可以看到,scanf函数只读取了abc,这里d作为结束对变量str赋值的标志,后面的输入被忽略。
1 /* 第二个格式示例 */
2 puts("输入:");
3 scanf("%[^abc]",str); // abc三个字符均会结束对变量的赋值
4 其他任意字符都会被赋值给变量
5 puts("输出:");
6 printf("str = %s",str);
输入:
defabc
输出:
str = def
上述示例,scanf函数将a作为结束对变量str赋值的标志,同样忽略后面的输入。
若是想代表所有字母或数字,不必要输入所有的字母和数字,只需使用破折号来代表一定的范围即可,例如:
a-z 代表从a到z的26个小写字母
A-Z 代表从A到Z的26个大写字母
c-z 代表从c到z的24个小写字母
0-9 代表从0到9的10个数字 ⚀