strstr(str,str1):该函数用来判断字符串str1是否是str的子串。如果是,就返回str1在str中首次出现的地址;如果不是,返回NULL;
strchr:用来查找字符串中首次出现某字符的位置;
可以看出strstr查找的是字符串,strchr查找的是字符;
字符和字符串的区别是:字符串以‘\0’结束,字符串可以包含多个字符;而字符就是单个字符。
下面是实现strstr库函数的具体的代码:
#include<stdio.h>
#include<assert.h>
char *my_strstr(const char *str,const char *str1)
{
char *p = (char *)str;
char *s =(char *)str1;
char *q = NULL;
assert(str);
assert(str1);
while(*p)
{
q = p;
while(*p && *s && (*p==*s))
{
p++;
s++;
}
if(*s == '\0')
{
return q;
}
p++;
}
return 0;
}
int main()
{
char *str = "You are beautiful!";
char *str1 = "beautiful";
printf("%s\n",my_strstr(str,str1));
return 0;
}
在VS2008中的运行结果:beautiful!
strchr和strstr很相似:
#include<stdio.h>
char *mystrchr(const char *str,char s)
{
char *p=(char *)str;
while(*p && *str!=s)
{
p++;
if(*p==s)
{
return p;
}
}
return 0;
}
int main()
{
char str[]="qwerty";
char s='t';
printf("%s\n",mystrchr(str,s));
return 0;
}
在VS2008中的运行结果:ty.