//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");
}
//
//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");
}