C语言编程实现,在一个字符串中,查找另一个字符串第一次出现的位置,如果不存在

2024-11-07 11:40:24
推荐回答(4个)
回答1:

#include
#include
/**************************************************
函数名:strstrn
参数: char *str1,char *str2,int n
返回值:char *
说明: 此函数在str1中找str2第n次出现,如果str2为空,返
回str1;如果str2在str1中出现则返回str2在str1中
出现的位置,n为负数时返回NULL
2013-4-7 22:37
***************************************************/
char * strstrn(char *str1,char *str2,int n)
{
int Count,len2,temp_len;
if(n<=0)return NULL;
char *p=str1;
len2=strlen(str2);
for(Count=0;Count{
p=strstr(p,str2);
if(p==NULL)break;
temp_len=strlen(p);
//将指针后移len2个单位
if(temp_len p=p+len2;
}
//如果未找到,此时Count肯定不会等于n,返回NULL
if(Count//如果Count==n,那么肯定是找到了
else return p-len2;
}
int main(void)
{
char *str1="aBCaBaBCZXZXCXCVBNMFGERasdfwerqwCVB";
char *str2="T";
char *p=strstrn(str1,str2,3);
if(p==NULL)
{
printf("没找到!!\n");
}
else
{
printf("%s\n",p);
}
return 0;
}

回答2:

int first_str(char *q,char *p)
{
char *s;
if(s=strstr(q,p)) return s-q;
return -1;
}

回答3:

char *strstr(const char *s1, const char *s2)
{
int n;
if (*s2)
{
while (*s1)
{
for (n=0; *(s1 + n) == *(s2 + n); n++)
{
if (!*(s2 + n + 1))
return (char *)s1;
}
s1++;
}
return NULL;
}
else
return (char *)s1;
}

回答4:

int strPos(const char* src, const char* pattern) {
char* pLocate = strstr(src, pattern); //库函数。
if (pLocate == NULL
return -1;
return pLocate-src;
}