strrstr 函数的实现在哪个库里

tongbaoxu 2009-03-12 01:24:15
strrstr在string.h里声明,但是在标准库里没有实现。
...全文
2228 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
千杯不醉-sen 2010-10-16
  • 打赏
  • 举报
回复

#include <string.h>
#include <stdio.h>

char str[] = "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";

void main( void )
{
char *pdest;
int result;
printf( "String to be searched:\n\t%s\n", string );
printf( "\t%s\n\t%s\n\n", fmt1, fmt2 );
pdest = strstr( string, str );
result = pdest - string + 1;
if( pdest != NULL )
printf( "%s found at position %d\n\n", str, result );
else
printf( "%s not found\n", str );
}
///////////////////////////////////////////////////////////////////////////
#include <string.h>
#include <stdio.h>

int ch = 'r';
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";

void main( void )
{
char *pdest;
int result;

printf( "String to be searched: \n\t\t%s\n", string );
printf( "\t\t%s\n\t\t%s\n\n", fmt1, fmt2 );
printf( "Search char:\t%c\n", ch );

/* Search forward. */
pdest = strchr( string, ch );
result = pdest - string + 1;
if( pdest != NULL )
printf( "Result:\tfirst %c found at position %d\n\n", ch, result );
else
printf( "Result:\t%c not found\n" );

/* Search backward. */
pdest = strrchr( string, ch );
result = pdest - string + 1;
if( pdest != NULL )
printf( "Result:\tlast %c found at position %d\n\n", ch, result );
else
printf( "Result:\t%c not found\n" );
}
旭子 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 jznhljg 的回复:]
C/C++ code

#include <assert.h>
#include <string.h>

char *strrchr(const char *s, int c)
{
const char ch = c;
const char *sc;

for (sc = NULL; ; ++s)
{
if (*s == ch……
[/Quote]

呵呵 佩服 写的很标准
jznhljg 2010-10-15
  • 打赏
  • 举报
回复

#include <assert.h>
#include <string.h>

char *strrchr(const char *s, int c)
{
const char ch = c;
const char *sc;

for (sc = NULL; ; ++s)
{
if (*s == ch)
sc = s;
if (*s == '\0')
return ((char *) sc);
}

assert(0);
return NULL;
}

char *strstr(const char *s1, const char *s2)
{
if (*s2 == '\0')
return ((char *) s1);

for (; (s1 = strchr(s1, *s2)) != NULL; ++s1)
{
const char *sc1 = s1;
const char *sc2 = s2;

for (; ;)
{
if (*++s2 == '\0')
return ((char *) s1);
else if (*++sc1 != *sc2)
break;
}

}

return NULL;
}
旭子 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 dengxu11 的回复:]

引用 3 楼 hairetz 的回复:

#include <string.h> 有的
而且应该是strstr,你打错了吧

没错 strstr匹配的是第一个出现的
strrstr是匹配最后哦一个出现的
[/Quote]

对不起 我记错了 是没有的,
自己写了个

char *strrstr(char *s, char *str)
{
char *p;
int len = strlen(s);
for (p = s + len - 1; p >= s; p--) {
if ((*p == *str) && (memcmp(p, str, strlen(str)) == 0))
return p;
}
return NULL;
}
旭子 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hairetz 的回复:]

#include <string.h> 有的
而且应该是strstr,你打错了吧
[/Quote]
没错 strstr匹配的是第一个出现的
strrstr是匹配最后哦一个出现的
Athenacle_ 2010-10-15
  • 打赏
  • 举报
回复
头文件里只有函数声明~
Athenacle_ 2010-10-15
  • 打赏
  • 举报
回复
一般这些函数的实现都不是在头文件里吧~一般都是编译到库里去了~
Sou2012 2010-10-15
  • 打赏
  • 举报
回复
#include <string.h>
某某9 2010-10-15
  • 打赏
  • 举报
回复
应该是strstr
kinwook 2010-10-15
  • 打赏
  • 举报
回复
Header shlwapi.h
Import library shlwapi.lib
feng4206yu 2009-03-20
  • 打赏
  • 举报
回复
我记得在书里面这个是个自己容易实现的例子(这个提到好像不是一个标准库函数)...楼主,你上当了...
ydntlk 2009-03-19
  • 打赏
  • 举报
回复
ANSI C库中并没有strrstr,但是貌似很多人都用此函数来表示搜索某字串中的子串在最右边的实现,反正也很好实现。
bluewine 2009-03-19
  • 打赏
  • 举报
回复
楼主是不是写错了啊?


还有,strrstr 我man了一下,好像linux下 也没这个函数啊
我昨天还用这个函数的另一个 strcasestr() ,不是标准的C
我直接自己写了一个 不用系统给的就行

[Quote=引用 11 楼 ForestDB 的回复:]
貌似strrstr是POSIX的标准,不是ANSI的标准。
[/Quote]
xiaoQ008 2009-03-19
  • 打赏
  • 举报
回复
All versions of the C run-time libraries
  • 打赏
  • 举报
回复
显然是strstr。。。
ForestDB 2009-03-16
  • 打赏
  • 举报
回复
貌似strrstr是POSIX的标准,不是ANSI的标准。
KevinHo 2009-03-12
  • 打赏
  • 举报
回复
你打错了吧……应该是strstr
就在string.h里
rabbitlzx 2009-03-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 tongbaoxu 的帖子:]
strrstr在string.h里声明,但是在标准库里没有实现。
[/Quote]

是strstr 还是 strrstr ?
ctan 2009-03-12
  • 打赏
  • 举报
回复
#include <string>
weidong0210 2009-03-12
  • 打赏
  • 举报
回复
恩 strstr
加载更多回复(5)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧