strstr(在一字符串中查找指定的字符串)
char *strstr( const char *s1, const char *s2 );
strstr()会从字符串s1中搜寻字符串s2,并将第一次出现的地址返回。返回指定字符串第一次出现的地址,否则返回NULL(如果s1或者s2为空,在vc中编译没有问题,当时运行时会出现异常)。
#include<stdio.h> #include<string.h>
//标准库中不存在strrstr函数,下面是一个自己编写的查找字符串s1中最后一次出现的字符串s2的位置的函数 char * my_strrstr( char const * s1, char const * s2 ) { char *last; char *current;
//把指针初始化为我们已经找到的前一次匹配位置 last = NULL;
//只有在两个字符串都不为空时才进行查找,如果其中一个为空,返回NULL if( s1 != NULL && s2 != NULL ) { //查找s2在s1中第一次出现的位置 current = strstr( s1, s2 );
//我们每次找到字符串时,让指针指向它的起始位置,然后查找该字符串下一个匹配位置 while( current != NULL ) { last = current; current = strstr( last + 1, s2 ); } }
return last; }
int main() { char *str1="this is a example,example,example"; char *str2="example"; printf( "my_strrstr( str1, str2 )的返回结果为:%s/n", my_strrstr( str1, str2 ) );
getchar(); return 0; } |
strchr(查找字符串中第一个出现的指定字符)
char *strchr( const char *s, int c );
strchr()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。如果找到指定的字符则返回该字符所在地址,否则返回NULL。
strrchr(查找字符串中最后出现的指定字符)
char *strrchr( const char *s, int c );
strrchr()用来找出参数s字符串中最后一个出现的参数c地址,然后将该字符出现的地址返回。如果找到指定的字符则返回该字符所在地址,否则返回NULL。
memchr(在某一内存范围中查找一特定字符)
void *memchr( const void *s, int c, size_t n );
memchr()从头开始搜寻s所指的内存内容前n个字节,直到发现第一个值为c的字节,则返回指向该字节的指针。如果找到指定的字节则返回该字节的指针,否则返回NULL。
#include<stdio.h> #include<string.h> int main() { char *s = "0123456789012345678901234567890"; char *p;
p = strchr(s,'9'); printf(" strchr(): %s/n",p);
p = strrchr(s,'9'); printf("strrchr(): %s/n",p);
p = strstr(s,"901"); printf(" strstr(): %s/n",p);
p = (char *)memchr( s, '9', 10 ); printf(" memchr(): %s/n",p); } |