- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sscanf函数用法详解及演示代码
Sscanf函数用法详解
名称: sscanf - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf string str, string fmt, mixed var1, mixed var2 ... ; int scanf const char *format [,argument]... ; 说明: sscanf与scanf类似,都是用于输入的,只是后者以 stdin 为输入源,前者以固定字符串为输入源。 其中的format可以是一个或多个 %[*] [width] [ h | l | I64 | L ]type | | \t | \n | 非%符号 注: 1、 * 亦可用于格式中, 即 %*d 和 %*s 加了星号 * 表示跳过此数据不读入. 也就是不把此数据读入参数中 2、 a|b|c 表示a,b,c中选一,[d],表示可以有d也可以没有d。 3、width表示读取宽度。 4、 h | l | I64 | L :参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size double例外 ,l64表示8字节size。 5、type :这就很多了,就是%s,%d之类。 6、特别的:%*[width] [ h | l | I64 | L ]type 表示满足该条件的被过滤掉,不会向目标参数中写入值 支持集合操作: %[a-z] 表示匹配a到z中任意字符,贪婪性 尽可能多的匹配 %[aB] 匹配a、B、中一员,贪婪性 %[^a] 匹配非a的任意字符,贪婪性 例子: 1. 常见用法。 char buf[512] ; sscanf 123456 , %s, buf ; printf %s\n, buf ; 结果为:123456 2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。 sscanf 123456 , %4s, buf ; printf %s\n, buf ; 结果为:1234 3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。 sscanf 123456 abcdedf, %[^ ], buf ; printf %s\n, buf ; 结果为:123456 4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。 sscanf 123456abcdedfBCDEF, %[1-9a-z], buf ; printf %s\n, buf ; 结果为:123456abcdedf 5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。 sscanf 123456abcdedfBCDEF, %[^A-Z], buf ; printf %s\n, buf ; 结果为:123456abcdedf 6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 iios/过滤掉,再将非@的一串内容送到buf中 sscanf iios/12DDWDFF@122, %*[^/]/%[^@], buf ; printf %s\n, buf ; 结果为:12DDWDFF 7、给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格) sscanf “hello, world”, %*s%s, buf ; printf %s\n, buf ; 结果为:world %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了 如果没有空格则结果为NULL。 sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式. //
using namespace std;
int main char str[100],a[100];
while gets a cout endl 注:只要遇到不符合条件的,即终止字符提取! endl;
sscanf a,%[^\n],str ;
cout 直接复制(遇回车结束) : str endl;
sscanf a,%s,str ;
cout 直接复制单个串(遇空格结束) : str endl;
memset str,0,sizeof str ;
sscanf a,%4
文档评论(0)