trim,ltrim,rtrim自定义实现

trim,ltrim,rtrim自定义实现

#include <stdio.h>
#include <memory.h>
#include <ctype.h>
#include <stdlib.h>

char *_trim(const char *str, int left, int right) {
    size_t size = strlen(str);
    char *preptr = str;
    char *posptr = str + size - 1;

    if (preptr && left) {
        while (isspace(*(preptr))) {
            preptr++;
        }
    }
    if (posptr && right) {
        while (isspace(*(posptr))) {
            posptr--;
        }
    }

    char *newstr = malloc(posptr - preptr);

    char *newstrptr = newstr;
    while (preptr <= posptr) {
        *(newstrptr++) = *(preptr++);
    }
    // 设置字符串结束符,malloc分配的内存空间,没有进行初始化,如果没有该操作,可能会出现莫名其妙的问题
    *(newstrptr) = '\0';
    return newstr;
}


char *rtrim(const char *str) {
    return _trim(str, 0, 1);

}

char *ltrim(const char *str) {
    return _trim(str, 1, 0);

}

char *trim(const char *str) {
    return _trim(str, 1, 1);

}

int main() {
    char *str = "    hellow, world     ";
    char *newstr = rtrim(str);
    printf("%s\n", newstr);
    free(newstr);
    newstr = ltrim(str);
    printf("%s\n", newstr);
    free(newstr);
    newstr = trim(str);
    printf("%s\n", newstr);
    free(newstr);
    return 0;
}

结果:

    hellow, world
hellow, world     
hellow, world
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值