C语言,问一个函数,检索并且返回某字符在某字符串中第一次出现的位置。是什么函数,返回值有哪些?急

C语言,问一个函数,检索并且返回某字符在某字符串中第一次出现的位置。是什么函数,返回值有哪些?急,第1张

如下: 函数名: strstr 功能: 在字符串中查找指定字符串的第一次出现 用法: char strstr(char str1, char str2); strstr原型:extern char strstr(char haystack, char needle); 头文件:#include <stringh> 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 编辑本段函数原型 1Copyright 1990 Software Development Systems, Inc char strstr( const char s1, const char s2 ) { int len2; if ( !(len2 = strlen(s2)) ) return (char )s1; for ( ; s1; ++s1 ) { if ( s1 == s2 && strncmp( s1, s2, len2 )==0 ) return (char )s1; } return NULL; } 2Copyright 1986 - 1999 IAR Systems All rights reserved 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; } 编辑本段举例 // strstrc #include <syslibh> #include <stringh> 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(str1,str2) str1: 被查找目标 string expression to search str2:要查找对象 The string expression to find 该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL The strstr() function returns the ordinal position within str1 of the first occurrence of str2 If str2 is not found in str1, strstr() returns 0 例子: 功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy” (假设xxx和yyy都是一个未知的字串) char s=” string1 onexxx string2 oneyyy”; char p; p=strstr(s,”string2”); if(p==NULL) printf(“Not Found!”); p=strstr(p,”one”); if(p==NULL) printf(“Not Found!”); p+=strlen(“one”); printf(“%s”,p); 说明:如果直接写语句p=strstr(s,”one”),则找到的是onexxx string2 oneyyy,不符合要求 所以需采用二次查找法找到目标

标准C语言实现下列标准库函数,设计中不得使用其他库函数。

strstr库函数:

char

strstr(char

str1,char

str2);

在字符串str1中,寻找字串str2,若找到返回找到的位置,否则返回NULL。

#include

<iostream>

char

strstr(const

char

str1,

const

char

str2);

char

strstr(const

char

str1,

const

char

str2)

{

char

s1,

s2;

assert

((str1

!=

(char

)0)

&&

(str2

!=

(char

)0));

/

空字符串是任务字符串的子字符串

/

if

(''

==

str2)

{

return

((char

)str1);

}

while

(str1)

{

s1

=

(char

)str1;

s2

=

(char

)str2;

while

((s1

==

s2)

&&

s1

&&

s2)

{

s1++;

s2++;

}

if

(''

==

s2)

{

return

((char

)str1);

}

str1++;

}

/

查找不成功,返回NULL

/

return

((char

)0);

}

int

main(int

argc,char

argv[])

{

char

a[20]="abcde";

char

b[20]="bc";

printf("%s

",

strstr(a,b));

system

("pause");

return

0;

}

strrpl库函数:

/

s

中的字符串

s1

替换成

s2

/

char

strrpl(char

s,

const

char

s1,

const

char

s2)

{

char

ptr;

while

(ptr

=

strstr(s,

s1))

/

如果在s中找到s1

/

{

memmove(ptr

+

strlen(s2)

,

ptr

+

strlen(s1),

strlen(ptr)

-

strlen(s1)

+

1);

memcpy(ptr,

&s2[0],

strlen(s2));

}

return

s;

}

包含文件:stringh

函数名: strstr

函数原型:

extern char strstr(char str1, const char str2);

语法: strstr(str1,str2)

str1: 被查找目标 string expression to search

str2: 要查找对象 The string expression to find

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

例子:

char str[]="1234xyz";

char str1=strstr(str,"34");

cout << str1 << endl;

显示的是: 34xyz

函数实现

1Copyright 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;

}

2Copyright 1986 - 1999 IAR Systems All rights reserved

char strstr(constchars1,constchars2)

{

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;

}

3 GCC-480

char strstr(const chars1,const chars2)

{

const charp=s1;

const size_tlen=strlen(s2);

for(;(p=strchr(p,s2))!=0;p++)

{

if(strncmp(p,s2,len)==0)

return (char)p;

}

return(0);

}

应用举例

// strstrc

#include <syslibh>

#include <stringh>

main()

{

char s="GoldenGlobalView";

char l="lob";

char p;

clrscr();

p=strstr(s,l);

if(p)

printf("%s",p);

else

printf("NotFound!");

getchar();

return0;

}

//功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy”

(假设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(chars1,chars2)

{

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;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12155413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存