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

相关推荐
Wang's Blog8 分钟前
Linux小课堂: 文件操作核心命令深度解析(cat、less、head、tail、touch 与 mkdir 命令)
linux·chrome·less
earthzhang202138 分钟前
第3讲:Go垃圾回收机制与性能优化
开发语言·jvm·数据结构·后端·性能优化·golang
纵有疾風起2 小时前
C++——类和对象(3)
开发语言·c++·经验分享·开源
Full Stack Developme2 小时前
java.text 包详解
java·开发语言·python
文火冰糖的硅基工坊2 小时前
[嵌入式系统-135]:主流AIOT智能体开发板
开发语言·嵌入式·cpu
fruge2 小时前
Ubuntu服务器已下载Nginx安装包的安装指南
服务器·nginx·ubuntu
Do_GH3 小时前
【Linux】07.Ubuntu开发环境部署
linux·运维·ubuntu
CHH32133 小时前
在 Mac/linux 的 VSCode 中使用Remote-SSH远程连接 Windows
linux·windows·vscode·macos
tryCbest3 小时前
Linux使用Docker部署项目后期更新
linux·运维·docker
承渊政道3 小时前
动态内存管理
c语言·c++·经验分享·c#·visual studio