C語言之strstr函式
阿新 • • 發佈:2019-02-08
【FROM MSDN && 百科】
原型:char *strstr(const char *str1, const char *str2);
#include<string.h>
找出str2字串在str1字串中第一次出現的位置(不包括str2的串結束符)。返回該位置的指標,如找不到,返回空指標。
Returns a pointer to the first occurrence of
strSearch in str, or
NULL if strSearch does not appear in
str. If strSearch points to a string of zero length, the function returns
str .
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #pragma warning (disable:4996) char *mystrstr(char *s1,char *s2); int main(void) { char *s="Golden Global View"; char *l="ob"; //char *l="" char *p; system("cls"); p=mystrstr(s,l); if (p!=NULL) { printf("%s\n",p); } else { printf("Not Found!\n"); } getch(); return 0; } /*FROM 百科*/ char *mystrstr(char *s1,char *s2) { int n; if (*s2) //兩種情況考慮 { while(*s1) { for (n=0;*(s1+n)==*(s2+n);n++) { if (!*(s2+n+1)) //查詢的下一個字元是否為'\0' { return (char*)s1; } } s1++; } return NULL; } else { return (char*)s1; } }
DEMO:
//#define FIRST_DEMO #define SECOND_DEMO #ifdef FIRST_DEMO #include <stdio.h> #include <conio.h> #include <string.h> int main(void) { char *s="Golden Global View"; char *l="lob"; char *p; system("cls"); p=strstr(s,l); if (p!=NULL) { printf("%s\n",p); } else { printf("Not Found!\n"); } getch(); return 0; } #elif defined SECOND_DEMO /*從字串” string1 onexxx string2 oneyyy”中尋找”yyy”*/ #include <stdio.h> #include <conio.h> #include <string.h> int main(void) { char *s="string1 onexxx string2 oneyyy"; char *p; p=strstr(s,"string2"); printf("%s\n",p); if (p==NULL) { printf("Not Found!\n"); } p=strstr(p,"one"); printf("%s\n",p); if (p==NULL) { printf("Not Found!\n"); } p+=strlen("one"); printf("%s\n",p); getch(); return 0; } #endif