函式解釋
strstr() 函式搜尋一個字元串在另一個字元串中的第一次出現。
該函式返回字元串的其餘部分(從匹配點)。如果未找到所搜尋的字元串,則返回 false。
語法
strstr(string,search)
參數 | 描述 |
---|---|
string | 必需 ,規定被搜尋的字元串 |
search | 必需。規定所搜尋的字元串。如果該參數是數字,則搜尋匹配數字 ASCII 值的字元。 |
提示
注釋:該函式是二進制安全的。
注釋:該函式對大小寫敏感。如需進行大小寫不敏感的搜尋,請使用 stristr()。
實例
1 | <?phpechostrstr("Helloworld!","world");?> |
輸出:
1 | world! |
Cstrstr()
包含檔案:string.h
函式名: strstr
函式原型:extern char *strstr(const char *str1, const char *str2);
語法:* strstr(str1,str2)
str1: 被查找目標string expression to search.
str2: 要查找對象The string expression to find.
返回值:該函式返回str2第一次在str1中的位置,如果沒有找到,返回NULL
The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0.
例子:
1 2 3 | charstr[]="1234 xyz "; char*str1=strstr(str,"34"); cout < |
顯示: 34 xyz
函式實現
1.Copyright 1990 Software Development Systems, Inc.
1 2 3 4 5 6 7 8 9 10 11 12 | char*strstr(constchar* s1 ,constchar*s2) { int len 2; if(!(len2=strlen(s2)))//此種情況下s2不能指向空,否則strlen無法測出長度,這條語句錯誤 return(char*)s1; for(;*s1;++s1) { if(*s1==*s2&&strncmp(s1,s2,len2)==0) return(char*)s1; } returnNULL; } |
2.Copyright 1986 - 1999 IAR Systems. All rights reserved
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | char*strstr(constchar*s1,constchar*s2) { intn; if(*s2) { while (*s1) { for(n=0;*(s1+n)==*(s2+n);n++) { if(!*(s2+n+1)) return(char*)s1; } s1++; } returnNULL; } else return(char*)s1; } |
3. GCC-4.8.0
1 2 3 4 5 6 7 8 9 10 11 12 | char* strstr(constchar*s1,constchar*s2) { constchar*p=s1; constsize_tlen=strlen(s2); for(;(p=strchr(p,*s2))!=0;p++) { if(strncmp(p,s2,len)==0) return(char*)p; } return(0); } |
套用舉例
// strstr.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<syslib.h> #include<string.h> main () { char*s="GoldenG lob alView"; char*l="lob"; char*p; clrscr(); p=strstr(s,l); if(p) printf("%s",p); else printf("NotFound!"); getchar(); return0; } |
//功能:從字串” string1 onexxx string2 oneyyy”中尋找”yyy”
(假設xxx和yyy都是一個未知的字串)
1 2 3 4 5 | char*s=”string1onexxxstring2oneyyy”; char*p; p=strstr(s,”yyy”); if(p==NULL)printf(“%s”,p); elseprintf("notfound\n");//此處寫法不對 |
說明:如果直接寫語句p=strstr(s,”one”),則找到的是onexxx string2 oneyyy,不符合要求所以需採用二次查找法找到目標實現
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | char*mystrstr(char*s1,char*s2) { if(*s1==0) { if(*s2)return(char*)NULL; return(char*)s1; } while(*s1) { inti=0; while(1) { if(s2[i]==0)returns1; if(s2[i]!=s1[i]) break ; i++; } s1++; } return(char*)NULL; } |