scanf(scanf(\"%s\",a)和scanf(\"%s\",&a))

更新时间:2023-03-01 18:06:28 阅读: 评论:0

sscanf原型

int sscanf( string str, string fmt, mixed var1, mixed var2 ... );其中的format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | ' ' | ' ' | 非%符号}

【解释】这句话意思是指,除了%...type之外,还有三个可选的空白字符和非%符号,比如:

sscanf(str,"%d%ssscanf(str,"%d %s",..);sscanf(str,"%d %s",...);sscanf(str,"%d,%s",...);//逗号隔开

1或2或3都可以任意重复(在这里将三个空白字符认为是一个类型)。

%*号

*号表示(比如%*d和%*s表示跳过此数据不读入)

char str[]="123apple";sscanf(str,"%*d%s",buf);printf("%s ",buf);//apple

特别地,可以忽略一个字符。比如有时读取换行时还剩有一个' '

scanf("%[^ ]%*c",...);%[]扫描字符集合

基本使用%[abc]:表示匹配括号中的任意字符,直到遇到非括号内字符为止。

char str[]="abcbc2600";sscanf(str,"%[abc]",buf);//abcbc

除了基本使用外,还支持范围。

支持集合操作:%[a-z]:表示匹配a到z中任意字符(尽可能多的匹配)%[^a]:匹配非a的任意字符(前面的例子有使用,比如%[^ ],匹配直到遇到' '为止)

和*进行组合:%*[a-z]:匹配尽可能多的a-z范围中的字符,并过滤掉。

char str[]="123456789apple";sscanf(str,"%*[0-5]%s",buf);printf("%s ",buf);//6789apple

一个综合例子:

char str[]="123/bob@2600";sscanf(str,"%*[^/]/%[^@]",buf);//bob

|或运算

比如,匹配[a-c]或[0-5]中的任意字符

char str[]="abcbc2600";sscanf(str,"%[a-c|2-5]",buf);printf("%s ",buf);//abcbc2

可以看到|是作为模式来应用的,假如我们就需要通过|切分串怎么办呢?

char buf[32];int n;char str[]="abc|2600";sscanf(str,"%[^\|]|%d",buf,&n);printf("%s,%d ",buf,n);//abc,2600结语

sscanf(scanf)的用法形式比较多,这里列举了一部分常用的用法

本文发布于:2023-02-28 20:14:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167766518879707.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:scanf(scanf(\"%s\",a)和scanf(\"%s\",&a)).doc

本文 PDF 下载地址:scanf(scanf(\"%s\",a)和scanf(\"%s\",&a)).pdf

上一篇:rm
下一篇:返回列表
标签:scanf
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|