C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)
需包含头文件:C 标准库 - <stdio.h>
文章目录
- 描述
- 声明
- 参数
- 返回值
- 实例
- 我在VS上测试(VS上要用sscanf_s)
- 示例1
- 示例2(提取时能默认以空格分割)
描述
C 库函数 int sscanf(const char *str, const char *format, ...)
从字符串读取格式化输入。
声明
下面是 sscanf() 函数的声明。
int sscanf(const char *str, const char *format, ...)
参数
- str – 这是 C 字符串,是函数检索数据的源。
- format – 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符 和 format 说明符。
- format 说明符形式为
[=%[*][width][modifiers]type=]
,具体讲解如下:
sscanf 类型说明符:
- 附加参数 – 这个函数接受一系列的指针作为附加参数,每一个指针都指向一个对象,对象类型由 format 字符串中相应的 % 标签指定,参数与 % 标签的顺序相同。
- 针对检索数据的 format 字符串中的每个 format 说明符,应指定一个附加参数。如果您想要把 sscanf 操作的结果存储在一个普通的变量中,您应该在标识符前放置引用运算符(&),例如:
int n;
sscanf (str,"%d",&n);
返回值
如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
实例
下面的实例演示了 sscanf() 函数的用法。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int day, year;char weekday[20], month[20], dtm[100];strcpy( dtm, "Saturday March 25 1989" );sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year );printf("%s %d, %d = %s\n", month, day, year, weekday );return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
March 25, 1989 = Saturday
我在VS上测试(VS上要用sscanf_s)
sscanf_s 取值的时候,需要在每个取值后面指定取值的最大大小。
(而且根据VS提示,貌似还需要是 unsigned int 类型)
_CRT_STDIO_INLINE int __CRTDECL sscanf_s(_In_z_ char const* const _Buffer,_In_z_ _Scanf_s_format_string_ char const* const _Format,...)
sscanf_s(inputString, "%s.%s.%s.%s", s1, s1.length, s2, s2.length, s3, s3.length, s4, s4.length);
示例1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int day, year;char weekday[20], month[20], dtm[100];strcpy_s(dtm, "Saturday March 25 1989");sscanf_s(dtm, "%s %s %d %d", weekday, (unsigned int)sizeof(weekday), month, (unsigned int)sizeof(month), &day, &year);printf("%s %d, %d = %s\n", month, day, year, weekday);return(0);
}
运行结果:
March 25, 1989 = Saturday
示例2(提取时能默认以空格分割)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char line[1024] = "path=/live/main_stream video_type=7 width=1920 height=1080 image_type=4 video_path=rkispp_scale0";const char* p;p = strstr(line, "path=");char path[64];if(NULL != p)sscanf_s(p, "path=%s", path, (unsigned int)sizeof(path));return(0);
}
运行调试结果:
参考文章1:C 库函数 - sscanf()
参考文章2:sscanf,sscanf_s及其相关用法
C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)相关推荐
- c++ 数组的输入遇到特定字符停止输入_C语言 第4章-字符串和格式化输入/输出
#include 用数组name储存字符串,name数组有40个字节,每个字节储存一个字符值. 在scanf()函数中,输入字符串name没有&前缀. C预处理器把字符常量DENSITY定义为 ...
- C语言函数fscanf()(从流 stream 读取格式化输入)(如果成功,返回成功匹配和赋值的个数;否则返回EOF)(分隔符:space、Tab、Enter)
C 标准库 - <stdio.h> 文章目录 描述 声明 参数 返回值 实例1 实例2 实例3 注意(分隔符:space.Tab.Enter) 换行格式化输入示例(暂时只能弄英文字符,中文 ...
- c语言sscanf函数和结构体,C语言sprintf与sscanf函数 -电脑资料
1.前言 我们经常涉及到数字与字符串之间的转换,例如将32位无符号整数的ip地址转换为点分十进制的ip地址字符串,或者反过来,总结一下.C语言提供了一些列的格式化输入输出函数,最基本的是面向控制台标准 ...
- R语言str_trim函数去除字符串中头部和尾部的空格
R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿
- R语言str_extract函数从字符串中抽取匹配模式的字符串
R语言str_extract函数从字符串中抽取匹配模式的字符串 目录 R语言str_extract函数从字符串中抽取匹配模式的字符串 #导入包和库
- R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符、str_sub函数指定起始位置和终止位置替换子字符串
R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符.str_sub函数指定起始位置和终止位置替换子字符串 目录
- R语言nchar函数统计字符串中字符个数实战
R语言nchar函数统计字符串中字符个数实战 目录 R语言nchar函数统计字符串中字符个数实战 #基础语法
- c语言子函数返回字符串的正确方式
c语言子函数返回字符串的错误 最近做leetcode上的一道题,通过子函数返回字符串.开始时用局部变量的字符串返回的,认为返回了字符串的首地址,便可以get到这个字符串,但由于局部变量离开函数后被回收 ...
- C语言字符串0x,0X04 字符串跟格式化输入/输出
0X04 字符串和格式化输入/输出 字符串(character string)就是一个或多个字符的序列.如:"hello world",双引号不是字符串的一部分,而是通知编译器,这 ...
最新文章
- MPLS 第一话 :传统IP路由的局限性
- LINUX 下 WEBlogic集群的搭建-01
- 【模拟退火】解决【TSP】问题
- [Codeforces]Codeforces Round #460 (Div. 2)
- 使用windows server backup备份还原hyper-v 3.0虚拟机
- hands-on Machine Learning with sklearn
- 云应用基础技术成熟需七年时间
- 年夜饭之 -- 麻油鸡
- MVC利用URLRoute实现伪静态后正真的静态html无法访问
- FTP上传失败报错解决
- 2021年遥感类SCI期刊中科院分区排名与影响因子汇总
- 基于PID的车辆ABS建模与仿真
- 自动驾驶货运编队行驶介绍
- cocos creator游戏发布和部署-HTML5篇
- RGB图像转换为灰度图像的原理
- 技术人员的公众号如何打造高质量内容和精美排版?
- IntelliJ IDEA单元测试入门
- ESP8266-NodeMCU项目(二):ESP8266-NodeMCU+Blinker+DHT11+小爱同学
- 丰润二中2021高考成绩查询,2021年唐山中考成绩查询
- XCP实战系列介绍06-CANape标定及标定后hex生成操作指导