• 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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    字符串链表添加元素

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    字符串链表元素格式转换

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    分割字符串

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    小程序制作(超详解!!!)第十二节 循环求和计算器
    reportportal 集成 robotframework 自动化执行及结果可视化
    《Java基础知识》Java ArrayList源码分析3
    PlayWright(二十二)- allure插件(一)
    Cesium Vue(二)— 基础配置
    【计算机网络】计算机网络体系结构与参考模型
    《Python》典型数据结构
    Docker 部署mysql8(arm64)
    每周统计-20240531
    Linux xfs文件系统stat命令Birth字段为空的原因探究
  • 原文地址:https://blog.csdn.net/wishixhui/article/details/138193268