用strstr這個函數(shù)
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設、中衛(wèi)網(wǎng)站維護、網(wǎng)站推廣。
包含文件:string.h
函數(shù)名: strstr
函數(shù)原型:extern char *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結束符)。
返回值:返回該位置的指針,如找不到,返回空指針。
復制相關函數(shù):memcpy、memmove、strcpy、strncpy
字符串連接函數(shù):strcat、strncat
字符串比較函數(shù):memcmp、strcmp、strcoll、strncmp、strxfrm、
查找函數(shù):memchr、strchr、strcspn、strpbrk、strrchr、strspn、strstr、strtok
其他相關函數(shù):memset、strerror、strlen
#includestdio.h
#includestring.h
int?findstr(char?*s_str,char?*d_str);
int?main(void)?{
char?s1[80],s2[80];
int?n;
printf("請輸入一個字符串:");
gets(s1);
printf("請輸入你要查找的字符串:");
gets(s2);
n=findstr(s1,s2);
printf("%s在%s里共有%d個\n",s2,s1,n);
return?0;
}
int?findstr(char?*s_str,char?*d_str)?{
int?i,j,k,count=0;
char?temp[80];
int?length=strlen(d_str);
for(i=0;istrlen(s_str);i++)?{
k=0;
for(j=i;ji+length;j++)
temp[k++]=s_str[j];
temp[k]='\0';
if(!strcmp(temp,d_str))?count++;
}
return?count;
}
下面是c語言實現(xiàn)字符串查詢的函數(shù),查到返回字符串的首址,查詢不到返回NULL指針。
#include stdio.h
char *my_strstr(char *src, char *str)
{
if(!src||!str) return NULL;
while(*src)
{
char *p1 = src;
char *p2=str;
while(*p1 *p2*p1 == *p2) p1++,p2++;//注意循環(huán)體中間是逗號,是一條語句
if (!*p2) return src;//循環(huán)后,p2指針指向的位置為字符串結尾標志,則查詢到字符串,返回查詢到的字符串首址
src++;
}
return NULL;
}
int main()
{
char aaa[]="hello world";
printf("%s\n", my_strstr(aaa, "world"));
return 0;
}
可利用strstr函數(shù)。
strstr函數(shù)功能是找出字符串中特定字符串第一次出現(xiàn)的位置。如果找到,返回字符串中出現(xiàn)特定字符串的地址;如果沒找到,返回空指針。如果要返回值是bool型的話,可以自寫一個函數(shù)根據(jù)strstr的返回值,判斷自寫函數(shù)的返回值。
如:
bool
strfind(*str1,*str2)
{
if(strstr(*str1,*str2)!=0)
return
true;
return
false;
}
如果要不區(qū)分大小寫,可以用strlwr(轉換為大寫)或strupr(轉換為小寫)將兩字符串同一轉換為大寫(或小寫)再作查找。