sscanf的高级使用
Posted alen_xie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sscanf的高级使用相关的知识,希望对你有一定的参考价值。
最近为了使用正则表达式配合sscanf使用,处理: char buf[]="123$$asdfasd$$eeeffff$$liman$$1111111111111$$ccdddd$$hello"; 上面的字符串分割开来。 需要的结果如下: sscanf(buf, "%[^$]$$%[^$]$$%[^$]$$%[^$]$$%[^$]$$%[^$]$$%[^$]", user, host, test1, msg, test2, test3, test4);^表示"非" ,[^\\n]表示读入换行字符就结束读入。这个是scanf的正则用法,我们都知道scanf不能接收空格符,但是使用%[^\\n]就可以了。 *表示该输入项读入后不赋予任何变量,即scanf("%*[^\\n]%*c")表示 跳过一行字符串 。
如果需要取后面几个开始呢: (3) * 表示跳过,如: int main() char buf[100]="123:asdfasd:2342342:liman:host:34234:hello"; char user[20]=""; char host[20]=""; char msg[20]=""; int cmd = 0; sscanf(buf, "% * d:% * [^:]:% * [^:]:%[^:]:%[^:]:%d:%s", user, host, &cmd, msg); return 0; 结果:user="liman",host="host",cmd=34234,msg=hello
参考sscanf的链接: 1-> http://blog.chinaunix.net/uid-26284412-id-3189214.html 2-> http://blog.csdn.net/sheji105/article/details/53726792
以上是关于sscanf的高级使用的主要内容,如果未能解决你的问题,请参考以下文章