Linux C语言 45-sscanf函数

Linux C语言 45-sscanf函数

本节关键字:Linux、C语言、字符串读取、字符串格式化、正则表达式

相关C库函数:printf、sscanf

格式化读取字符串

c 复制代码
#include <stdio.h>
int sscanf(const char *str, const char *format, ...);
/**
@brief  从字符串读取格式化输入
@param  str C语言字符串
@param  format 可以是:%c %d %f %o %s %u %x %p %[] %%等
@param  ... [可变参数](https://blog.csdn.net/qq_45157350/article/details/134600815)
@return 成功返回匹配和赋值的个数,失败返回EOF
*/
c 复制代码
#include <stdio.h>

int main()
{
	// 从字符串中格式化读取子字符串
	int ret;
	char sBuf[512] = {0};
	char sKey[128] = {0};
	char sValue[128] = {0};

	ret = sscanf("123456 ", "%s", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取指定长度,例如:读取4个字符
	ret = sscanf("132456 ", "%4s", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取到指定字符为止,例如:读取到空格为止
	ret = sscanf("213456 ABC", "%[^ ]", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取到指定字符为止,例如:读取到回车符为止
	ret = sscanf("213456 ABC", "\n%[^\n]", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取指定字符集,例如:只读取1到9的数字和小写字母
	ret = sscanf("123abcABC", "%[1-9a-z]", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取到大写字母为止
	ret = sscanf("123abcABC", "%^A-Z", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取/和@之间的字符
	ret = sscanf("abc/123456@ABC", "%*[^/]/%[^@]", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 只读取world
	ret = sscanf("hello, world", "%*s%s", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 读取等号两边的数据
	ret = sscanf("user=admin\r\n", "%[^=]=%[^\r\n]", skey, svalue);
	printf("ret:%d, skey:%s, svalue:%s\n", ret, skey, svalue);

	// 读取[section]
	ret = sscanf("[section]", "[%[^]]", sBuf);
	printf("ret:%d, sBuf:%s\n", ret, sBuf);

	// 未完,后续还会补充...

	return 0;
}

正则表达式

Linux C语言 46-正则表达式

相关推荐
Yyyyyy~5 分钟前
【java】类和对象
java·开发语言
幼儿园蛋小黑6 分钟前
【无标题】C语言变量,类型转换,运算符,输入和输出
c语言·嵌入式实时数据库
高亦真11 分钟前
今天是学习嵌入式的第38天
linux·学习·算法
凌风的跨境分享14 分钟前
Temu运营避坑指南:制造地点信息填写合规要点与批量优化方法
运维·服务器·人工智能
DYWorker00114 分钟前
Linux驱动子系统:中断子系统 —— Consumer和Provider(005)
linux·驱动开发
草莓熊Lotso18 分钟前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
Joy T33 分钟前
Spring AI 2.0 进阶入门:Workflow、Routing、Task State 与可控 Agent
开发语言·人工智能·workflow·routing·springai·orchestrator·evaluator
重生之小比特37 分钟前
【Java SE】抽象类和接口
java·开发语言
传奇开心果编程38 分钟前
【Rust入门知识点学与练】第33课:异步编程入门(async/await)强化
开发语言·学习·rust
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之单点登录(SSO)实战
服务器·spring·状态模式