-
strstr
(C語言函數)
鎖定
- 外文名
- strstr
- 分 類
- C語言函數
- 作 用
- 返回字符串中首次出現子串的地址
- 包含文件
- string.h
strstr函數原型
extern char *strstr(char *str1, const char *str2);
語法:
* strstr(str1,str2)
str1: 被查找目標 string expression to search.
str2: 要查找對象 The string expression to find.
例子:
char str[]="1234xyz"; char *str1=strstr(str,"34"); cout << str1 << endl;
顯示的是: 34xyz
strstr函數實現
1.Copyright 1990 Software Development Systems, Inc.
char *strstr(const char *s1, const char *s2) { int len2; if (!(len2 = strlen(s2)))//此種情況下s2不能指向空,否則strlen無法測出長度,這條語句錯誤 return (char *) s1; for (; *s1; ++s1) { if (*s1 == *s2 && strncmp(s1, s2, len2) == 0) return (char *) s1; } return NULL; }
2.Copyright 1986 - 1999 IAR Systems. All rights reserved
char *strstr(constchar *s1, constchar *s2) { int n; if (*s2) { while (*s1) { for (n = 0; *(s1 + n) == *(s2 + n); n++) { if (!*(s2 + n + 1)) return (char *) s1; } s1++; } return nullptr; } else return (char *) s1; }
3. GCC-4.8.0
char *strstr(const char *s1,const char *s2) { const char *p=s1; const int size_tlen=strlen(s2); for(;(p=strchr(p,*s2))!=0;p++) { if(strncmp(p,s2,size_tlen)==0) return (char*)p; } return(0); }
4. 常用經典實現方法
char *strstr(const char *str1, const char *str2) { char *cp = (char *) str1; char *s1, *s2; if (!*str2) return ((char *) str1); while (*cp) { s1 = cp; s2 = (char *) str2; while (*s1 && *s2 && !(*s1 - *s2)) s1++, s2++; if (!*s2) return (cp); cp++; } return NULL; }
strstr應用舉例
// strstr.c
#include <stdio.h> #include <string.h> int main() { char *s = "GoldenGlobalView"; char *l = "lob"; char *p; p = strstr(s, l); if (p) printf("%s\n", p); else printf("NotFound!\n"); getchar(); return 0; }
(假設xxx和yyy都是一個未知的字串)
char *s = "string1onexxxstring2oneyyy"; char *p; p = strstr(s, "yyy"); if (p != NULL) printf("%s", p); else printf("notfound\n");
説明:如果直接寫語句p=strstr(s,”one”),找到的是onexxxstring2oneyyy
char *mystrstr(char *s1, char *s2) { if (*s1 == 0) { if (*s2) return (char *) NULL; return (char *) s1; } while (*s1) { int i = 0; while (1) { if (s2[i] == 0) return s1; if (s2[i] != s1[i]) break; i++; } s1++; } return (char *) NULL; }
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:8次歷史版本
- 最近更新: 君伟junwei521