sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。但新手可能并不知道处理字符串时的一些高级用法,这里做个简要说明吧。

1. 常见用法

以下是引用片段: 
  char str[512] = {0};  
  sscanf( "123456 ", "%s ", str);  
  printf( "str=%s\n ", str);

2. 取指定长度的字符串

如在下例中,取最大长度为4字节的字符串。

以下是引用片段: 
  sscanf( "123456 ", "%4s ", str);  
  printf( "str=%s\n ", str);

3. 取到指定字符为止的字符串

如在下例中,取遇到空格为止字符串。

以下是引用片段: 
  sscanf( "123456 abcdedf ",  "%[^ ] ",  str);

  printf( "str=%s\n ", str);

4. 取仅包含指定字符集的字符串

如在下例中,取仅包含1到9和小写字母的字符串。

以下是引用片段: 
  sscanf( "123456abcdedfBCDEF ", "%[1-9a-z] ", str);  
  printf( "str=%s\n ", str);

5. 取到指定字符集为止的字符串

如在下例中,取遇到大写字母为止的字符串。

以下是引用片段: 
  sscanf( "123456abcdedfBCDEF ", "%[^A-Z] ", str);  
  printf( "str=%s\n ", str);

6. 特殊格式

如何解释 fscanf(fd,"%*[^\n]")
"%[^\n]"表示读输入字符串,直到碰到字符‘\n’为止,其中^表示否的意思

7. 总结

Scanf(格式化字符串输入),相关函数 fscanf,snprintf,sscanf,格式详解!

#include <stdio.h>

int scanf(const char *format, ...);
函数说明 scanf()会将输入的数据根据参数format字符串来转换并格式化数据。Scanf()格式转换的一般形式如下
%[*][size][l][h]type
以中括号括起来的参数为选择性参数,而%与type则是必要的。
* 代表该对应的参数数据忽略不保存。
size 为允许参数输入的数据长度。
l 输入的数据数值以long int 或double型保存。
h 输入的数据数值以short int 型保存。
底下介绍type的几种形式
%d 输入的数据会被转成一有符号的十进制数字(int)。
%i 输入的数据会被转成一有符号的十进制数字,若输入数据以“0x”或“0X”开头代表转换十六进制数字,若以“0”开头则转换八进制数字,其他情况代表十进制。
%0 输入的数据会被转换成一无符号的八进制数字。
%u 输入的数据会被转换成一无符号的正整数。
%x 输入的数据为无符号的十六进制数字,转换后存于unsigned int型变量。
%X 同%x
%f 输入的数据为有符号的浮点型数,转换后存于float型变量。
%e 同%f
%E 同%f
%g 同%f
%s 输入数据为以空格字符为终止的字符串。
%c 输入数据为单一字符。
[] 读取数据但只允许括号内的字符。如[a-z]。
[^] 读取数据但不允许中括号的^符号后的字符出现,如[^0-9].
 
返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。

scanf family API 高级用法相关推荐

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

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

  2. Newtonsoft.Json高级用法

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  3. SAP UI5 应用开发教程之六十 - SAP UI5 地图控件的一些高级用法试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  4. Java生成随机数的几种高级用法

    转载自 进阶 | Java生成随机数的几种高级用法! 言归正传,众所周知,随机数是任何一种编程语言最基本的特征之一.而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数.看似简单,但有时我们也 ...

  5. sscanf的高级用法

     sscanf的高级用法(总结) 2012-04-25 18:50:25 分类: C/C++ sscanf(recvbuf,"%*[^/]/%[^ ]s",buf_rev);    ...

  6. Python爬虫的requests模块你真的学会了吗?来看看这些高级用法!

    1. 文件上传 我们知道requests可以模拟提交一些数据.假如有的网站需要上传文件,我们也可以用它来实现,这非常简单,示例如下: 很多人学习python,不知道从何学起. 很多人学习python, ...

  7. 细说 ASP.NET Cache 及其高级用法

    阅读目录 开始 Cache的基本用途 Cache的定义 Cache常见用法 Cache类的特点 缓存项的过期时间 缓存项的依赖关系 - 依赖其它缓存项 缓存项的依赖关系 - 文件依赖 缓存项的移除优先 ...

  8. sscanf和sprintf的高级用法

    sscanf和sprintf是scanf和printf家族的一对成员,用于处理和分析字符串非常强大得两个函数 头文件 stdio.h 原型 int sscanf( const char *buffer ...

  9. [转]Newtonsoft.Json高级用法

    本文转自:http://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多 ...

最新文章

  1. python把英语句子成分字母_英语句子成分-谓语讲解 什么是谓语?(
  2. spring中的jdk动态代理(代码步骤)
  3. OpenCV兼容性测试的实例(附完整代码)
  4. 微信小程序引入WeUI
  5. 关于JSON CSRF的一些思考
  6. [译]GC专家系列4-Apache的MaxClients设置及其对Tomcat Full GC的影响
  7. 偶也要去上海Tech一把了
  8. 手机python3l运行_Python3 os.lchflags() 方法
  9. Windows Server 2016存储空间直连技术的探秘
  10. 最详细 Spring Boot 入门(-)
  11. gbase里的分布表与复制表
  12. 14.Vue cli脚手架安装
  13. 解决前端做excel下载的文件打不开
  14. one 主格 复数 宾格_英语主格宾格形容词性物主代词及名词性物主代词练习题.doc...
  15. 2018计算机通信网络,2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个...
  16. Linux 进程内存布局(一)
  17. 5元的小乌龟吃什么_小乌龟吃什么?小乌龟怎么养经验详解
  18. Linux下笔记本禁用触摸板
  19. 如何在 SAP ABAP 系统中使用 Adobe Form
  20. C++ 实现两个向量之间的夹角

热门文章

  1. Linux 内核链表 【转】
  2. jquery-validae
  3. [BZOJ 3942] [Usaco2015 Feb] Censoring 【KMP】
  4. easyui中的datagrid的数据加载的问题
  5. 浅析何时进行概况分析
  6. XPath函数——字符串函数
  7. Python学习笔记:Day 6 配置文件
  8. 【Android笔记】MediaPlayer基本使用方式
  9. linux系统安装yum环境
  10. [云炬ThinkPython阅读笔记]2.7 注释