C语言字符串相关操作

主要使用指针操作,熟练使用指针对字符串进行操作。

函数:int find_substr(const char *src, const char *sub_str);

功能:在src中寻找子字符串sub_str;

参数:src(被寻找的字符串), sub_str(寻找的子字符串)

返回值:如果子字符串存在于src字符串中,则返回子字符串在src中的起始位置,否则返回-1;

int find_substr(const char *src, const char *sub_str)
{
    //参数检测
    if (src == NULL || sub_str == NULL)
        return -1;

    const char *substr = NULL;
    inst start_pos = 0;

    while(*src != '\0'){
        substr = sub_str;
        //如果在src中找到一个字符与子字符串第一个字符相等的字符,进入循环比较下一个字符
        if (*src == *substr){
            //循环比较字符,直到substr到字符串结尾'\0',如果中间有字符不相等,则跳出循环继续寻找
            while(*src && *substr && (*src == *substr)){
                src++;
                substr++;
                start_pos++;
            }
            //判断比较结果是否达到结尾,如果没有达到结尾,则继续在src中寻找,否则返回起始位置。
            if (*substr == '\0')
                return start_pos - strlen(sub_str) + 1;
        }
        src++;
        start_pos++;
    }
    return -1;
}

函数:删除字符串中的子字符串

原型:char *del_substr(char *str, char const *substr);

参数:str(原字符串),substr(需要删除的字符串)

返回值:如果删除成功返回删除后的字符串,否则返回NULL。

char *del_substr(char *str, const char *substr)
{
    //参数检测
    if (str == NULL || substr == NULL)
        return NULL;

    //找到子字符串的起始位置
    int pos = find_substr((const char *)str, substr);
    if (pos >= 0){
        //src偏移到子字符串起始位置
        char *src = str;
        src += pos;
        src--;

        //将字符串中子字符串后的字符串移动到子字符串位置
        for (const char *ch = substr; *ch != '\0'; ch++){
            *src = *(src+strlen(substr));
            src++;
        }
        //将剩余的字符串拼接到移动后的字符串并返回。
        char *tmp = src + strlen(substr);
        *src = '\0';
        strcat(src, tmp);
        return str;
    }else{
        return NULL;
    }
}

如有问题,欢迎指正。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值