标签:
1.strstr函数说明
strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL
2.strstr函数运用
#include <stdio.h> #include<stdlib.h> #include<string.h> void main() { char str1[9] = "tasklist"; char str2[5]="list"; char *p = strstr(str1, str2); if (p) { puts("包含"); } else { puts("不包含"); } system("pause"); }
3.思路
4.下标实现
#include <stdio.h> #include<stdlib.h> #include<string.h> char *mystrstr(char *str1,char *str2) { char*p = NULL; int lenstr1 = strlen(str1);//str1的长度 int lenstr2 = strlen(str2);//str2的长度
if(lenstr1<lenstr2)return p; //lenstr1-lenstr2表示当str1剩余的字符个数<str2的个数时,str1会越界 for (int i = 0; i <=lenstr1-lenstr2; i++) { int find = 1;//标识找到与否 for (int j = 0; j < lenstr2; j++) { //为何是i+j?因为str1和str2都同步移动 if (str1[i + j] != str2[j]) { find = 0; break;//跳出内部for循环 } } if (find==1) { p = &str1[i];//将首次str2出现的地址返回 break;//说明已找到 } } return p; } void main() { char str1[9] = "tasklist"; char str2[5]="list"; char *p = mystrstr(str1, str2); if (p!=NULL) { puts("包含"); printf("%c", *p); } else { puts("不包含"); } system("pause"); }
5.指针实现
#include <stdio.h> #include<stdlib.h> #include<string.h> char *mystrstr(char *str1, char*str2) { char *p = NULL; if (strlen(str1) < strlen(str2))return p; for (char* pstr1 = str1; *pstr1 !=‘\0‘; pstr1++) { int find = 1; for (char* pstr2 = str2; *pstr2 !=‘\0‘; pstr2++) { //防止越界 if (*(pstr1 + (pstr2 - str2)) == ‘\0‘) { find = 0; break; } if (*(pstr1 + (pstr2 - str2)) != *pstr2) { find = 0; break; } } if (find==1) { p = pstr1; break; } } return p; } void main() { char *str1 = "tasklist"; char *str2 = "list"; char *p = mystrstr(str1, str2); if (p!=NULL) { puts("包含"); printf("%c", *p); } else { puts("不包含"); } system("pause"); }
标签:
原文地址:http://www.cnblogs.com/ginb/p/4388300.html