编写函数删除一个字符串中的一部分,函数原型如下:
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++) {