在字符串中查寻子字符串
在字符串中查找子字符串。
怎样用C语言实现在字符串中查找子字符串的位置,如果找不到则返回NULL.
------解决方案--------------------
//供lz参考
怎样用C语言实现在字符串中查找子字符串的位置,如果找不到则返回NULL.
------解决方案--------------------
//供lz参考
- C/C++ code
char * maxString(char const * src1,char const * src2) { int i,j; int index = 0,lastindex = 0,len = 0,lastlen = 0; char * laststr = (char *)malloc(20); for (i=0; src1[i] != '\0'; i++) { for (j=0; src2[j] != '\0'; j++) { if (src1[i+len] == src2[j]) { if(!len) { index = j; } len++; } else { if (len) { if(lastlen < len) { lastlen = len; lastindex = index; } len = 0; j = index; } } } } len = 0; while(lastlen--) { laststr[len++] = src2[lastindex++]; } laststr[len] = '\0'; return laststr; }
------解决方案--------------------
用 strstr 不就行了吗。
------解决方案--------------------
C语言中本身就有一个库函数strstr帮你解决这个问题啊
原型:extern char *strstr(char *haystack, char *needle);
用法:#include <string.h>
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
- C/C++ code
// strstr.c #include <syslib.h> #include <string.h> main() { char *s="Golden Global View"; char *l="lob"; char *p; clrscr(); p=strstr(s,l); if(p) printf("%s",p); else printf("Not Found!"); getchar(); return 0; }
------解决方案--------------------
有库函数 strstr哈
直接拿来用就行了
------解决方案--------------------
------解决方案--------------------
- C/C++ code
#include <stdio.h>
char * maxString(char const * src1,char const * src2);
int main()
{
char a[100],b[100]="abcdefg",c[100]="abc";
char *p=a;
p=maxString(b,c);
printf("%s\n",p);
system("pause");
return 0;
}
/*整体来说就是src2中从开始每一位和src1中的每个字符比较有相同len++,继续下一位的比较,一旦没有执行else*/
char* maxString(char const * src1,char const * src2)
{
int i,j;
int index = 0,lastindex = 0,len = 0,lastlen = 0;
char *laststr = (char *)malloc(20);
for (i=0; src1[i] != '\0'; i++)
{
for (j=0; src2[j] != '\0'; j++)
{
if (src1[i+len] == src2[j])//如果说j中有字符和src1[i+len]相等
{
if(!len)
{
index = j;//len等于0,index值等于j(len等于0的情况的处理)
}
len++;//计数器加一
}
else//一直到src2中j位置和src1中不相等
{
if (len)//len计数器有值,表示src2中有多少个字母和src1相同
{
if(lastlen < len)
{
lastlen = len;
lastindex = index;