由浅入深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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

招财猫_Martin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值