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的高级使用的主要内容,如果未能解决你的问题,请参考以下文章

c函数sscanf的高级技巧

c函数strstr和sscanf组合高级技巧

c函数sscanf的高级技巧

sscanf高级用法级正则表达式

sscanf使用小记

C++里sscanf()与swscanf()的使用