由浅入深C系列六:C中实现字符串trim的功能

简介: 由浅入深C系列六:C中实现字符串trim的功能

简介

在一个项目的开发过程中,需要用C语言实现对字符串中的指定字符进行过滤并从原字符串中删除。相当于Java中String.replace()的功能。经查询C语言的基本库,没有找到类似功能的库函数,于是,发挥程序员的主观能动性和自力更生的能力,也就啥都有了。:)

设计思路

主要利用指针来对原字符串进行遍历,遇到对应的字符后,则跳过复制到新串的动作;未匹配的字符则正常进行复制到新串的动作。

代码实现

char* strtrim(char *src, char c) 
{
   
    char* output = (char*)malloc(strlen(src)*sizeof(char));
    memset(output, 0, strlen(src));

    char* in = src;
    char* ot = output;

    while(*in) 
    {
   
        if (*in == c)
        {
   
            *in++;
            continue;
        }
        else
        {
   
            *ot = *in;
            *ot++;
            *in++;
        }
    }
    // 这里提示一个小知识点,也是重要的知识点,对于malloc/realloc申请的内存,是放在heap里的,所以,使用完之后,要记得free(),避免内存泄漏。memoey leak就不好玩了。。。
    return output;
}

测试代码

char* p ="\"code\":\"xdfiesdf9iersdfk;asdfjnm\"";
X_LOG_DEBUG("Refore %s", p);
X_LOG_DEBUG("After %s", strtrim(p, '\"'));

X_LOG_DEBUG是一个宏定义,参考系列文档的上一篇。链接: 由浅入深C系列五

运行效果

[Aug 14 2023 00:41:20] [src/osmp.c.101] [main] [DEBUG] Refore "code":"xdfiesdf9iersdfk;asdfjnm"
[Aug 14 2023 00:41:20] [src/osmp.c.102] [main] [DEBUG] After code:xdfiesdf9iersdfk;asdfjnm
相关文章
|
4月前
|
JavaScript 前端开发 Java
trim处理是什么,怎样使用
trim处理是什么,怎样使用
|
4月前
|
索引 Python
使用Python拆分一个字符串为多个子串的多功能函数代码设计
要想将Python的字符串拆成多个子串,可以使用字符串对象的split()方法。不过,使用才方法时,需要注意的是参数的传递,确切来说,需要观察原字符串的特点,比如目标子串之间是否有一样的分隔符,因此,又可以将该方法的使用分成两种情况。现罗列在下方:子串之间存在一样的分隔符,比如“A、B、C”字符串中的三个子串“A”、“B”和“C”之间都使用“、”间隔开来,那么就可以将“、”字符作为参数传递给split()方法,一次性将Python字符串拆分成多个目标子串;子串之间不存在一样的分隔符,比如“C、D,E”,那就需要多次使用split()方法来拆分字符串以得到目标子串;
123 3
|
4月前
|
C++ 索引
C++系列十五:字符串
C++系列十五:字符串
|
11月前
|
C++ Windows Perl
[笔记]c++基础实践《二》regex正则表达式
[笔记]c++基础实践《二》regex正则表达式
正则中re高级用法findall中的一个小坑
正则中re高级用法findall中的一个小坑
|
Python
Python编程 字符串组成方式
Python编程 字符串组成方式
75 0
LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)
LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)
|
前端开发
前端学习案例7-正则-括号的用法
前端学习案例7-正则-括号的用法
75 0
前端学习案例7-正则-括号的用法
|
前端开发
前端学习案例8-正则-括号的用法
前端学习案例8-正则-括号的用法
73 0
前端学习案例8-正则-括号的用法
|
JavaScript 开发者
字符串的 padStart 方法使用|学习笔记
快速学习字符串的 padStart 方法使用
244 0
字符串的 padStart 方法使用|学习笔记