一、scanf函数

scanf() - 以屏幕(stdin)为输入源,提取输入指定格式的数据,返回提取的数据个数。

函数原型:int scanf( const char *format [,argument]... );

二、sscanf函数

sscanf() - 从一个字符串中读进与指定格式相符的数据,非常适合字符获取,例如提取IP,网址域名,邮箱用户名等等。

函数原型:Int  sscanf( string str, string format , mixed var1, mixed var2 ... );

说明:
其中的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 表示满足该条件的被过滤掉,不会向目标参数中写入值

支持集合操作:

  1. %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
  2. %[aB'] 匹配a、B、'中一员,贪婪性
  3. %[^a] 匹配非a的任意字符,贪婪性

三、用法

3.1 最简单的用法
    string = "china beijing 123";
    ret = sscanf(string, "%s %s %d", buf1, buf2, &digit);
3.2 取指定长度的字符串
    string = "123456789";
    sscanf(string, "%5s", buf1);
3.3 取到指定字符为止的字符串
    string = "123/456";
    sscanf(string, "%[^/]", buf1);
3.4 取到指定字符集为止的字符串
    string = "123abcABC";
    sscanf(string, "%[^A-Z]", buf1);
3.5 取仅包含指定字符集的字符串
    string = "0123abcABC";
    sscanf(string, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
3.6 获取指定字符中间的字符串
    string = "ios<android>wp7";
    sscanf(string, "%*[^<]<%[^>]", buf1);
3.7 指定要跳过的字符串
    string = "iosVSandroid";
    sscanf(string, "%[a-z]VS%[a-z]", buf1, buf2);
3.8 分割以某字符隔开的字符串
    string = "android-iphone-wp7";
    sscanf(string, "%[^-]-%[^-]-%[^-]", buf1, buf2, buf3);
3.9 提取邮箱地址
    string = "Email:beijing@sina.com.cn";
    sscanf(string, "%[^:]:%[^@]@%[^.].%s", buf1, buf2, buf3, buf4); 
3.10 过滤掉不想截取或不需要的字符串--补充,
    string = "android iphone wp7";
    sscanf(string, "%s %*s %s", buf1, buf2);

参考:

1:Linux C语言中sscanf 的详细用法

scanf sscanf 的用法相关推荐

  1. scanf,sscanf高级用法

    最近遇到了解析配置的问题,用正规表达式感觉大题小做,使用sscanf因只会用基本用法,感觉功能不够,上网搜了下,解析起来不费吹灰之力,代码也很简洁. 原帖出处不详,网上到处是,我做了点修改 名称: s ...

  2. 字符串处理函数:sscanf 的用法

    前言: 一直对于一些日期字符串中数字的提取比较头疼,现看到 sscanf 对于字符串中的内容提取较方便,学习记录如下.方便以后查询. sscanf():将 C 语言字符串中数据按 指定的格式 将数据存 ...

  3. C语言之 scanf() 函数的用法

    C语言之 scanf() 函数的用法 输入一个正整数,对这个正整数中的各位进行比较,输出最大那个数 比如: 输入:123456789 输出:9 #include <stdio.h>int ...

  4. scanf的拓展用法——匹配特定字符

    scanf的基本用法除了常规的输入操作外还有一些特殊的用法,使用这些用法可以很方便的在输入中读取想要的数据 1.限制输入数据的长度 这个应该算不上拓展用法,大多数读者应该都曾经使用过,这里简单提一下 ...

  5. C语言 —— 你不得不知道的 scanf 的高级用法

    如果你想让自己的输入更加炫酷.更加个性化.更加安全,那么还需要学习 scanf() 的高级用法,这才是大神和菜鸟的分水岭. 好了,言归正传,我们分三个方面讲解 scanf() 的高级用法. 1) 指定 ...

  6. scanf在c语言中的作用,c语言中scanf的基本用法

    前言 scanf()是C语言的格式输入函数,和printf函数一样被声明在stdio.h头文件中,它的基本使用很简单: 1 int a; 2 scanf("%d",&a); ...

  7. 牛客网循环输入输出测试——C语言scanf和printf用法

    在实际的编程中需要自己写出完整的程序,预留好输入的接口,使用while循环接收多个测试用例,C语言在输出时printf要用换行"\n". 字符串输入输出问题见博客:牛客网字符/字符 ...

  8. c语言putchar和scanf,C语言学习——getchar()、putchar()、scanf和printf用法

    C语言学习--getchar().putchar().scanf和printf用法 在C语言中,数据的输入输出是利用系统函数来实现的.设计人员只要调用相关的系统函数,就可以完成各种数据的输入输出工作. ...

  9. %d 跟%i 的区别以及scanf和sscanf的用法

    scanf 用%i能够获得8/16进制的值, 比如0011就是9,0x11就是17,当然如果读取到08或者09就会出错了. scanf简介 scanf函数,与printf函数一样,都被定义在stdio ...

最新文章

  1. MFC中UPD通信详细解说
  2. 【响应式Web前端设计】CSS3伪类与伪元素的区别
  3. 在无人驾驶汽车大规模应用以前,自动驾驶叉车已经逐步潜入制造业
  4. SAP Spartacus项目执行yarn prettier-fix命令之后的输出
  5. 将时间格式的字符串转换成日期类型浏览器兼容解决方案
  6. Perl正则表达式匹配
  7. 关于mysql文件的.frm文件的导入
  8. 26muduo_net库源码分析(二)
  9. H - 数论中的异或 HRBUST - 1688
  10. 24个最好免费下载电子书(Ebooks)的网站
  11. 万用表的使用方法 (图解)
  12. 人工智能AI对客户服务的影响正在形成
  13. 线程(一)伤害不大,侮辱性极强——idm与多人运动
  14. word2019未找到MathPage.wll文件的解决方法
  15. 我的macbook应用清单
  16. 简单通用QQ/微信跳转浏览器打开代码
  17. python中去除全角空格
  18. 互联网奠基人:温顿·瑟夫自曝新冠病毒检测呈阳性
  19. 【计算机组成原理】CPU如何区分指令和数据
  20. AE开发常见问题总结

热门文章

  1. 苹果手机输入屏保后锁屏_修一块手机屏幕要7080元?
  2. python 循环赋值_Python打牢基础,从19个语法开始!
  3. java 面试题 由浅入深_面试官由浅入深的面试套路
  4. 微信5.0登录提示服务器繁忙,iOS集成友盟社会化分享微信无法登录?
  5. Exynos4412 文件系统制作(二)—— 文件系统简介
  6. CSDN-markdown编辑器使用手册
  7. VC6 + OpenCV1.0实现图片缩放显示
  8. shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)
  9. linux设备:cdev和kobj_map
  10. [Redux/Mobx] Redux怎样设置初始状态?