实现strchr函数
#include<stdio.h>
void myputs(char *p)
{
while(*p != '\0')
{
printf("%c",*p++);
}
putchar('\n');
}
char *myStrchr(char *str,char c)
{
while(*str != '\0')
{
if(*str == c) return str;
str++;
}
return NULL;
}
int main()
{
char c = 'a';
char *str = "landlsad ad ";
char *p = NULL;
p = myStrchr(str,c);
myputs(p);
return 0;
}
实现strstr函数
外层循环用于定位在是str1中的查找起点,当内侧循环未完全匹配的时候,外侧循环的指针就后移一位,再次通过内侧循环测试。
而内层循环一旦对应相等则不断比较测试后面的字符,直到str2子串的尾部,如果p2到达尾部说明完全相等。内层循环如果发现有不等的字符就跳出内层循环重新从str1的下一位开始比较。
#include<stdio.h>
void myputs(char *p)
{
while(*p != '\0')
{
printf("%c",*p++);
}
putchar('\n');
}
char *myStrstr(char *str1,char *str2)
{
while(*str1 != '\0')
{
char *p1 = str1;
char *p2 = str2;
while(*p2 != '\0')
{
// printf("p1:%c,p2:%c\n",*p1,*p2);
if(*p1 == *p2)
{
*p1++;
*p2++;
}else{
break;
}
}
if(*p2 == '\0') return str1;
str1++;
}
return NULL;
}
int main()
{
char *c = "ls";
char *str = "landlsad ad ";
char *p = NULL;
p = myStrstr(str,c);
myputs(p);
return 0;
}