#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h> /* sscanf特殊用法补充 */ void test()
{
const char * p1 = "333<key:value>abcde";
const char * p2 = "<key:value>abcde";
int rc = ;
char buf1[] = { };
char buf2[] = { };
char buf3[] = { };
int index = ; /*
目标:
提取<>中的内容
*/ rc = sscanf(p1, "%[^<]<%[^>]>%n%s", buf1, buf2, &index, buf3);
printf("==11111==rc[%d]==buf1[%s]===buf2[%s]=buf3[%s]===index[%d]=====\n", rc, buf1, buf2, buf3, index);
/*
说明:
%n获取的是截止到>这个数据的长度,这个长度是相对于源字符串p1,而不是相对于%[^<],%n可以放在任何地方,他就是用来统计到当前位置的长度 特别强调,%n不包括在返回值中,这里rc的值是3,而不是4
*/ //注意点
memset(buf1, , );
memset(buf2, , );
memset(buf3, , );
index = ;
rc = sscanf(p2, "%[^<]<%[^>]>%n%s", buf1, buf2, &index, buf3);
printf("====2222222==rc[%d]==buf1[%s]===buf2[%s]=buf3[%s]===index[%d]=====\n", rc, buf1, buf2, buf3, index);
/*
强调:
当匹配p2时,什么都没有匹配到,原因是p2不符合%[^<]这个条件,p2以<开始,所以%[^<]匹配不到任何东西,需要注意这一点
强调sscanf匹配时,必须能匹配到数据,数据不可以不存在,这一点和正则不同
*/ } int main(int argc, char *argv[])
{
test();
printf("-----ok------\n");
getchar();
return ;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h> //sscanf指定检索长度 void test()
{
const char* p = "%8888asdas";
char buf[] = { };
int n = ; if (sscanf(p, "%%%x", &n))
{
printf("---111---[%d]------\n", n); //打印‭559242‬,因为提取的十六进制数是8888a
} if (sscanf(p, "%%%2x", &n))
{
printf("----22--[%d]------\n", n); //打印‭136,因为提取的十六进制数是88
} //说明: 其他提取方式类同,例如 %3s 表示提取3个字符
} int main()
{
test();
return ;
}

C语言 sscanf函数补充的更多相关文章

  1. c语言 sscanf()函数

    sscanf()函数用于从字符串中读取指定格式的数据,其原型如下:    int sscanf (char *str, char * format [, argument, ...]); [参数]参数 ...

  2. C语言sprintf和sscanf函数用法

    以前刚用C语言的时候,觉得字符串很难处理,后来用多了,发现其实并非如此,C语言也提供了许多函数给程序员使用.今天记录一下两个常用的两个字符串处理函数:sprintf和sscanf 1. sprintf ...

  3. C语言sprintf与sscanf函数

    1.前言 我们经常涉及到数字与字符串之间的转换,例如将32位无符号整数的ip地址转换为点分十进制的ip地址字符串,或者反过来.从给定的字符串中提取相关内容,例如给定一个地址:http://www.bo ...

  4. C语言sprintf与sscanf函数[总结]

    sprintf函数 sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量转 ...

  5. sscanf函数——强大的C语言库函数

    这个函数真的很强大,这篇随笔也将一直更新一些总结,直到涵盖大多数应用: eg1: 今天公司项目中从云端获取了一段字符串---"+CBC: 0,90,4090" 我想获取其中的数字0 ...

  6. sscanf函数和正则表达式

    看了几篇介绍sscanf函数,真是发现自己好多东西没理解透,详细介绍使用在sscanf中使用正则表达式. 第一篇: 此文所有的实验都是基于下面的程序: char str[10]; for (int i ...

  7. 【学习笔记】【C语言】函数

    一. 什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”.所以,你可以说C语言程序是由函数构成的. 比如你用C语言编写了一 ...

  8. C语言的本质(15)——C语言的函数接口入门

    C语言的本质(15)--C语言的函数接口 函数的调用者和其实现者之间存在一个协议,在调用函数之前,调用者要为实现者提供某些条件,在函数返回时,实现者完成调用者需要的功能. 函数接口通过函数名,参数和返 ...

  9. python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法

    一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstan ...

随机推荐

  1. HTML&CSS基础-html注释功能

    HTML&CSS基础-html注释功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.什么是HTML(Hypertext Markup Language) 超文本标记 ...

  2. JVM垃圾回收算法分析与演示【纯理论】

    继续接着上一次[https://www.cnblogs.com/webor2006/p/10729649.html]的来学习,上次在结尾处提到了JVM常见的GC算法,如下: 接下来则逐一的对其进行学习 ...

  3. http上传下载文件

    curl_easy_setopt curl库的方式 调用 (c++中) 短连接  一次请求 一次响应

  4. 基于源代码为树莓派设备构建 TensorFlow

    本指南为运行 Raspbian 9.0 操作系统的 Raspberry Pi 嵌入式设备构建 TensorFlow.虽然这些说明可能也适用于其他系列的 Raspberry Pi 设备,但它仅针对此文中 ...

  5. 在windows系统和kali中通过sqlmap注入

    第1章 在windows系统中通过sqlmap注入 1.1 环境搭建 Sqlmap是目前功能最强大,使用最为广泛的注入类工具,是一个开源软件,被集成于kaliLinux, 由于sqlmap是基于Pyt ...

  6. 爬虫 - 请求库之requests

    介绍 使用requests可以模拟浏览器的请求,比起python内置的urllib模块,requests模块的api更加便捷(本质就是封装了urllib3) 注意:requests库发送请求将网页内容 ...

  7. 斜率优化板题 HDU 3507 Print Article

    题目大意:输出N个数字a[N],输出的时候可以连续的输出,每连续输出一串,它的费用是 "这串数字和的平方加上一个常数M".n<=500000 我们设dp[i]表示输出到i的时 ...

  8. 二分图匹配--KM算法

    Kuhn-Munkres算法 KM算法,求完备匹配下的最大权匹配,时间复杂度O(\(n^3\)) 所谓的完备匹配就是在二部图中,x点集中的所有点都有对应的匹配 且 y点集中所有的点都有对应的匹配 ,则 ...

  9. ShardingSphere初探1 --Sharding-JDBC

    Sharding-JDBC 引入maven依赖: <dependency> <groupId>org.apache.shardingsphere</groupId> ...

  10. P4899 【[IOI2018] werewolf 狼人】

    感觉已经几次碰到这种类型的题目了,写篇\(Blog\)总结一下 题意: 是否存在一条\((s_i, t_i)\)的路径,满足先只走编号不超过\(L_i\)的点,再走编号不超过\(R_i\)的点 \(S ...