由浅入深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
相关文章
|
6月前
|
JavaScript 前端开发 Java
trim处理是什么,怎样使用
trim处理是什么,怎样使用
|
1月前
|
存储 Python Perl
Python编程--正则基础(一)
Python编程--正则基础(一)
|
1月前
|
Python
Python编程--正则基础(二)
Python编程--正则基础(二)
|
6月前
|
C++ 索引
C++系列十五:字符串
C++系列十五:字符串
|
C++ Windows Perl
[笔记]c++基础实践《二》regex正则表达式
[笔记]c++基础实践《二》regex正则表达式
正则中re高级用法findall中的一个小坑
正则中re高级用法findall中的一个小坑
|
Python
Python编程 字符串组成方式
Python编程 字符串组成方式
82 0
LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)
LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)
|
存储 安全 C++
|
存储 Java C语言
C实战 | 字符串替换
C实战 | 字符串替换
159 0
C实战 | 字符串替换