C语言从字符串中删除某个子串

编写函数删除一个字符串中的一部分,函数原型如下:

int del_substr(char *str, char const *substr) 

函数首先判断substr是否出现在str中,如果未出现,函数就返回0;如果出现,函数应该把str中位于该子串后面的所有字符复制到该子串的位置,从而删除这个子串,然后函数返回1。如果substr多次出现在str中,函数只删除第一次出现的子串。

函数的第2个参数不能修改。

eg: 假定str指向“ABCDEFG”这个字符串,如果substr指向"FGH"、"CDF"或者“XABC”时,函数应该返回0,str未作修改。如果substr指向"CDE",函数就把str修改为指向“ABFG”,方法是把‘F’、‘G’和最后的'\0'都一起复制到‘C’的位置,然后函数返回1。

这里目的是修改第一个参数,但要求寻找的子串不允许修改。

同样不能使用C库函数。也不使用数组下标引用。

#include <stdio.h>

#define TRUE 1
#define FALSE 0

//每次从当前的str中搜寻子串,没有找到就返回NULL,
//找到就返回子串在str中的尾部的下一个指针
char* match(char *str, char *want) {
    while(*want != '\0') {
        //如果str先到达尾部,也会是NULL
        if(*str++ != *want++) {
  
  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值