wow-string-list文件说明

wow-string-list文件说明

  • 项目地址:https://gitee.com/wow-iot/wow-iot7
  • 本文件主要功能用于字符串链表相关操作,主要涉及创建、销毁、插入、获取、分隔、格式转换;

初始化与退出:

复制代码
StringList_T* wow_stringlist_new(void)
{
	return (StringList_T*)wow_slist_create();	
}
void wow_stringlist_free(StringList_T** pptStrList)
{
	wow_slist_destroy(pptStrList,slist_free_func);
}

字符串链表添加元素

复制代码
int wow_stringlist_append(StringList_T* ptStrList, const char *pcElem)
{
	CHECK_RET_VAL_P(ptStrList,-PARAM_INPUT_STRUCT_IS_NULL,"param input struct invalid!\n");
	CHECK_RET_VAL_P(pcElem && strlen(pcElem) > 0,-PARAM_INPUT_DATA_IS_NULL,"param input data invalid!\n");

	int len = strlen(pcElem);

	char* data = MALLOC(len + 1);
	CHECK_RET_VAL_P(data,-SYSTEM_MALLOC_FAILED,"malloc data size!\n");
	memset(data,0,len + 1);
	memcpy(data,pcElem,len);

	return wow_slist_insert_tail(ptStrList,data);
}

获取字符串链表元素个数与内容

复制代码
int wow_stringlist_size(StringList_T* ptStrList)
{
	return wow_slist_size(ptStrList);
}
char* wow_stringlist_data(StringList_T* ptStrList,int nIdx)
{
	return (char*)wow_slist_peek_by_index(ptStrList,nIdx);
}

字符串链表元素格式转换

复制代码
int wow_stringlist_toInt(StringList_T* ptStrList,int nIdx)
{
	char* data = (char*)wow_slist_peek_by_index(ptStrList,nIdx);
	CHECK_RET_ABORT(data);

	return strtol(data,NULL,10);
}

float wow_stringlist_toFloat(StringList_T* ptStrList,int nIdx)
{
	char* data = (char*)wow_slist_peek_by_index(ptStrList,nIdx);
	CHECK_RET_ABORT(data);

	return (float)strtod(data,NULL);
}

分割字符串

复制代码
StringList_T* wow_stringlist_split(char *pcStr, const char *pcDelim)
{
	StringList_T* ptStrList = wow_stringlist_new();
	CHECK_RET_VAL_P(ptStrList,NULL, "string_list new failed!\n");

	char *copy = strdup(pcStr);
	CHECK_RET_GOTO_P_A(copy,out, "strdup failed!\n");

	int ret = -1;
	char *token = strtok(copy, pcDelim);
	while (token){
		ret = wow_stringlist_append(ptStrList, token);
		CHECK_RET_GOTO(ret == 0,out);

		token  = strtok(NULL, pcDelim);
	}

	free(copy);
	return ptStrList;

out:
	wow_stringlist_free(&ptStrList);
	free(copy);
	return NULL;
}
相关推荐
invicinble3 小时前
对linux形成认识
linux·运维·服务器
小Pawn爷3 小时前
14.VMmare安装ubuntu
linux·运维·ubuntu
郝学胜-神的一滴4 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
半桔4 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
HABuo4 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
Howrun7775 小时前
关于Linux服务器的协作问题
linux·运维·服务器
小白同学_C6 小时前
Lab3-page tables && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os
十年磨一剑~6 小时前
Linux程序接收到sigpipe信号崩溃处理
linux
geshifei6 小时前
Sched ext回调3——select_cpu(linux 6.15.7)
linux·ebpf
代码游侠7 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法