sscanf的使用

语法

int ssanf(const char *buffer, const char *format,[argument]...);

参数

  • buffer 存储的数据
  • format 控件字符串
  • argument 可选自变量

说明

第二个参数可以是一个或者多个 {%[*] [width] [{h | I | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}

这个参数说明暂时不清楚,先不用管它,稍后通过例子来说明

返回值

函数将返回成功赋值的字段个数;返回值不包括已读取但未值的字段个数。返回值为0表示在第一次读取之前到达字符串结尾,则返回EOF

sscanf("1 2 3","%d %d %d",buf1, buf2, buf3);
//成功调用返回值为3,即buf1,buf2,buf3均成功转换。
sscanf("1 2","%d %d %d",buf1, buf2, buf3);
//成功调用返回值为2,即只有buf1,buf2成功转换。
sscanf("hello, world", "%*s%s", buf);
//成功调用返回值为1,buf成功转换

使用实例

  1. 一般用法——将一字符串赋值给另一个字符串

    sscanf("123456","%s",buf);

  2. 取指定长度的字符串

    sscanf("1233456","%4s",buf);

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

    sscanf("123456 abcdef","%[^ ]",buf)

    其中[^ ]^ 表示全集中除去空格的集合。是自定义的一种规则。

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

    sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);

    其中[^A-Z]表示全集中除去[A-Z]的集合,也就是说遇到不是该集合中的字符就停止读取。

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

    sscanf("123456abcdeBCDEF","[1-9a-z]",buf);

    其中[1-9a-z]表示集合,用[1-9,a-z]表示也可以

  6. 给定一个字符串iios/12DDWDFF@122 ,获取/ 和 @ 之间的字符串,可以按照前面第3条规则,来读取。

    sscanf("iios/12DDWDFF@122 ","%*[^/]/%[^@]",buf);

    其中%*[^/]/%[^@]表示先读取到遇到 /为止的字符串(/并没有读入),然后因为有*所以不写入,中间加的一个/是为了读取缓冲区中的/,紧接着%[^@]读取遇到@的字符串,写入到buf里面。

  7. 分割字符串

    sscanf("hello, world","%*s%s",buf);

    最终写入buf的是world。因为这利用了%s读取遇到空格停止的特性。

sscanf的使用的更多相关文章

  1. C语言关于利用sscanf实现字符串相加减

    #include<stdio.h>#include<string.h>void main(){ int a; int b; char str1[10] = "9999 ...

  2. sscanf提取字符串中的数据php

    1.需求 理解sscanf的作用 2.例子 $str = "age:30 weight:60kg"; sscanf($str,"age:%d weight:%dkg&qu ...

  3. sscanf与正则表达式(转)

    今天翻google reader的时候看到这样一篇文章,介绍的是sscanf的高级用法.直到今天我才知道sscanf是可以直接用正则表达式的,惭愧. 在msdn中sscanf的声明如下 int ssc ...

  4. C语言函数sscanf()的用法

    从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( st ...

  5. sscanf()函数的使用及其实例

    资料引自: 传送门 sscanf函数原型: Int sscanf( const char * src, const char * format, ...); int scanf( const char ...

  6. C 语言sscanf

    C语言以sscanf逗号作为分割符 ]={}; ]={}; ]={}; sscanf(],&buf_b[],&buf_b[]); printf("************** ...

  7. Babelfish(二分查找,字符串的处理略有难度,用sscanf输入)

    Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 28581   Accepted: 12326 题目链接: ...

  8. (转)sscanf() - 从一个字符串中读进与指定格式相符的数据

    (转)sscanf() - 从一个字符串中读进与指定格式相符的数据 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, stri ...

  9. sscanf函数

    sscanf函数用法举例 #include <stdio.h> #include <string.h> #define N 512 int main() { char buf[ ...

  10. hdu 1036 (I/O routines, fgets, sscanf, %02d, rounding, atoi, strtol) 分类: hdoj 2015-06-16 19:37 32人阅读 评论(0) 收藏

    thanks to http://stackoverflow.com/questions/2144459/using-scanf-to-accept-user-input and http://sta ...

随机推荐

  1. ADO winform注册

    前面我们了解了如何实现登录,现在.我们来讨论如何实现注册功能,注册其实就是 通过程序,往数据库中新增数据.首先我们同样连接到数据库,同上页一样创建连接,然后 打开连接.之后我们就要去获取我们输入到文本 ...

  2. pycharm中模块matplolib生成图表出现中文乱码解决方法

    在python文件中加入如下两行 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中 ...

  3. 转 java ClassLoader

    http://blog.csdn.net/xyang81/article/details/7292380 http://www.ibm.com/developerworks/cn/java/j-lo- ...

  4. jq解析json文件

    $.ajaxSettings.async = false;//同步还是异步 $.getJSON(URL,function(data){ //成功后执行 })

  5. 【Codeforces1111D_CF1111D】Destroy the Colony(退背包_组合数学)

    题目: Codeforces1111D 翻译: [已提交至洛谷CF1111D] 有一个恶棍的聚居地由几个排成一排的洞穴组成,每一个洞穴恰好住着一个恶棍. 每种聚居地的分配方案可以记作一个长为偶数的字符 ...

  6. Codeforces Round #497 (Div. 2) C. Reorder the Array

    Bryce1010模板 http://codeforces.com/contest/1008/problems #include <bits/stdc++.h> using namespa ...

  7. 085 Maximal Rectangle 最大矩形

    给定一个填充了 0 和 1 的二进制矩阵,找到最大的只包含 1 的矩形并返回其面积.例如,给出以下矩阵:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0返回 6 详见:http ...

  8. python里面的list、tuple和dict的区别

    Dictionary .Dictionary是Python中内置的数据类型之一,他定义了键和值之间一对一的关系. 每一个元素都有一个key-value对,整个元素集合用大括号{}括起来. 你可以通过k ...

  9. Windows忘记mysql的密码

    1.查看mysql的安装路径 show variables like "%char%"; 路径:C:\Program Files\MySQL\MySQL Server 5.7\ 2 ...

  10. var声明提前 undefined

    1.同一代码块内,所有var声明都提前: 2.var 变量的初始化不提前,按顺序执行: 3."undefined"和undefined都存在于window中: 4.if(" ...