删除一个字符串的一部分_02

//01 请编写函数。删除字符串的一部分。函数原型如下:
//
//int del_substr(char *str, const char *substr);
//函数首先判断substr是否出现在str中,如果并未出现,函数就返回0;如果出现,函数应该把str中该字符串后面的所有字符串赋值到该字符串位置,
//从而删除这个字符串,然后函数返回1。如果substr多次出现在str中,函数只删除第1次出现的字符串。
//
//a.函数中不使用任何操作字符串的函数.(如:strcpy、strcmp等)
//b.函数中的任何地方不使用下标


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


int mystrlen(char *p)
{
int length = 0;  //长度
while (*p != '\0')   //检测字符串是否结束
{
length++;    //继续计数
p++;      //指针继续前进
}
return length;
}
/

 char *my_strstr(const char *buf, const char *sub)
{
char *bp;
char *sp;


if (!*sub)
return buf;
while (*buf)
{
bp = buf;
sp = sub;
while (*bp++ == *sp++)
{
if (!*sp)
return buf;
}
buf += 1;
}
        return NULL;
}


char *mystrcpy(char *p1, const char *p2)
{
if (p1 == NULL || p2 == NULL)
{
return NULL;
}
char *p = p1;
while (*p1++ = *p2++);
return p;
}
int del_substr(char *str, const char *substr)
{


if (str == NULL || substr == NULL)
{
return NULL;
}


char *pos = NULL;


if ((pos = my_strstr(str, substr)) == NULL)
{
return 0;
}


mystrcpy(pos, pos + mystrlen(substr), mystrlen(pos + mystrlen(substr)) + 1);


return 1;
}
void main()
{
char allstr[100] = "草泥马 12345678 hello c hello cpp hello python hello 天朝";
char str[10] = "hello";
del_substr(allstr, str);

printf("%s", allstr);
system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值