这里只介绍了scanf的三种基本正则表达式输入(%[] , ^ , *)
以后如果有需要再添加吧
我们先来简短介绍一下scanf(以输入字符串为例)
scanf("%s",s);
这里表示的输入一个字符串s,%表示选择,s是条件,只要是字符,便会被读入
此时scanf的正则表达式就出现啦,它的作用就是通过改变引号内的形式("%s")来成功将普通的什么都输入进去变成只输入你想要的输入
最简单的例子,就是当%s变成%1s时,表示只能输入一个字符,
那下面介绍的这些神奇的符号,简单理解就是给输入增加一些条件,然后致使你输入时可以让程序挑选出你需要的字符被输入,并且将其它的过滤掉
第一种(%[])
%[]是指输入满足[]内条件的字符,碰到条件外的字符停止输入
举个栗子
scanf("%[0-9]",s),这个时候,程序会挑选你输入中的0-9范围内的字符
比如输入:1234abcd
那么输出:1234
scanf("%[a-z]",s),这个时候,程序会挑选你输入中的a-z范围内的字符,
比如输入:abcd1234
那么输出:abcd
第二种(* )
% * 与% 刚好相反,表示不会输出满足[]内条件的字符,碰到[]内条件的字符就停止输入
举个栗子
scanf("%*[0-9]%[a-z]",str);程序会跳过0-9,只输出abc
printf("%s\n",str);
输入:123abc
输出:abc
第三种(^)
%^ 可以输入不包括指定字符的字符
举个栗子
scanf("%[^a-z]", s);表示只能输进出a-z之外的字符,若碰到a-z之间的则停止输入
printf("%s\n",s);
输入:123abc
输出:123
注意:这种方式可以读入空格
比如你可以这样写输入语句
scanf("%[^\n]",s)表示遇到\n才停止输入
printf("%s\n",s);
输入:123 456 78 9(输入之后压回车)
输出:123 456 78 9(这样输入便可以保留空格了)
由此也可以得出%[^,]可以表示遇到" , "停止输入
%[^@],表示遇到 “ @ ”停止输入
%s就是遇到空格便停止输入
添加一点:
如果要输入两行那么就需要给两个字符串分别scanf("%^ [\n] %*c % ^ [\n]")
本文详细介绍了C语言中scanf函数的三种正则表达式输入方式:%[], ^ 和 *,并提供了丰富的实例,帮助读者理解如何使用这些符号来精确控制输入。
&spm=1001.2101.3001.5002&articleId=103335641&d=1&t=3&u=1cdb49cd352244a2be71dc1c04d0df13)
689

被折叠的 条评论
为什么被折叠?



