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-正则表达式

相关推荐
轻松Ai享生活17 小时前
5 节课深入学习Linux Cgroups
linux
侃侃_天下18 小时前
最终的信号类
开发语言·c++·算法
christine-rr18 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神55518 小时前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆18 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
echoarts18 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
乌萨奇也要立志学C++19 小时前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
Aomnitrix19 小时前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题19 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说19 小时前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox