C语言 sscanf函数补充
#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函数补充的更多相关文章
- c语言 sscanf()函数
sscanf()函数用于从字符串中读取指定格式的数据,其原型如下: int sscanf (char *str, char * format [, argument, ...]); [参数]参数 ...
- C语言sprintf和sscanf函数用法
以前刚用C语言的时候,觉得字符串很难处理,后来用多了,发现其实并非如此,C语言也提供了许多函数给程序员使用.今天记录一下两个常用的两个字符串处理函数:sprintf和sscanf 1. sprintf ...
- C语言sprintf与sscanf函数
1.前言 我们经常涉及到数字与字符串之间的转换,例如将32位无符号整数的ip地址转换为点分十进制的ip地址字符串,或者反过来.从给定的字符串中提取相关内容,例如给定一个地址:http://www.bo ...
- C语言sprintf与sscanf函数[总结]
sprintf函数 sprintf函数原型为 int sprintf(char *str, const char *format, ...).作用是格式化字符串,具体功能如下所示: (1)将数字变量转 ...
- sscanf函数——强大的C语言库函数
这个函数真的很强大,这篇随笔也将一直更新一些总结,直到涵盖大多数应用: eg1: 今天公司项目中从云端获取了一段字符串---"+CBC: 0,90,4090" 我想获取其中的数字0 ...
- sscanf函数和正则表达式
看了几篇介绍sscanf函数,真是发现自己好多东西没理解透,详细介绍使用在sscanf中使用正则表达式. 第一篇: 此文所有的实验都是基于下面的程序: char str[10]; for (int i ...
- 【学习笔记】【C语言】函数
一. 什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”.所以,你可以说C语言程序是由函数构成的. 比如你用C语言编写了一 ...
- C语言的本质(15)——C语言的函数接口入门
C语言的本质(15)--C语言的函数接口 函数的调用者和其实现者之间存在一个协议,在调用函数之前,调用者要为实现者提供某些条件,在函数返回时,实现者完成调用者需要的功能. 函数接口通过函数名,参数和返 ...
- python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法
一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstan ...
随机推荐
- HTML&CSS基础-html的图片标签
HTML&CSS基础-html的图片标签 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如下图所示,准备一张图片,存放路径和html文件在同一目录 二.HTML源代码 ...
- 优化nginx数据包头缓存
例子:414错误,网址太长. 长网址访问例子: 以下脚本会生成一个长网址并访问,导致414长网址报错. [root@proxy ~]#vim nginx_test.sh #!/bin/bash URL ...
- 构建之法——beta版本
一.开头☀️ 这个作业属于哪个课程 课程链接 这个作业要求在哪里 要求链接 团队名称 Running Man 这个作业的目标 完成团队的Beta版本项目 二.时间任务安排☀️ 时间安排: 冲刺总时间为 ...
- Windows 将FTP 映射到本地文件夹 --简化操作
转载自yutiantongbu Windows 将FTP 映射到本地文件夹 --简化操作 1.右键我的电脑,选择映射网络驱动器 2.选择"连接到可用与存储文档和图片的网站" 3.接 ...
- 摘:JAVA JXL API的详细使用
转自:http://www.cr173.com/html/10377_1.html 1 开发调研1.1 需求描述MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式.作为 ...
- ARTS-week5
Algorithm 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组.说明:初始化 nums1 和 nums2 的元素数量分别 ...
- libpng 漏洞分析
相关资源 PNG文件格式文档 http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html https://www.myway5.com/index.p ...
- idea去除mybatis的xml那个恶心的绿色背景
https://my.oschina.net/qiudaozhang/blog/2877536
- mongodb 简单使用说明
首先安装 mongodb软件地址 https://www.mongodb.org/downloads#production: 然后在 mongodb安装目录下找到bin 文件夹进去 在它的位置上按下 ...
- go 学习 (四):接口 & 方法
接口声明 // 接口声明 语法:接口是一个 函数签名 的集合,函数签名(函数的声明,不包括实现) type interfaceName interface { method1(param param ...