提交 6597f9ac 编写于 作者: R Rich Felker

implement memrchr (nonstandard) and optimize strrchr in terms of it

上级 750b738e
...@@ -74,6 +74,7 @@ int strncasecmp (const char *, const char *, size_t); ...@@ -74,6 +74,7 @@ int strncasecmp (const char *, const char *, size_t);
char *strchrnul(const char *, int); char *strchrnul(const char *, int);
char *strcasestr(const char *, const char *); char *strcasestr(const char *, const char *);
char *strsep(char **, const char *); char *strsep(char **, const char *);
void *memrchr(const void *, int, size_t);
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
......
#include <string.h>
#include "libc.h"
void *__memrchr(const void *m, int c, size_t n)
{
const unsigned char *s = m;
c = (unsigned char)c;
while (n--) if (s[n]==c) return (void *)(s+n);
return 0;
}
weak_alias(__memrchr, memrchr);
#include <string.h> #include <string.h>
void *__memrchr(const void *, int, size_t);
char *strrchr(const char *s, int c) char *strrchr(const char *s, int c)
{ {
const char *p; return __memrchr(s, c, strlen(s));
c = (char)c;
for (p=s+strlen(s); p>=s && *p!=c; p--);
return p>=s ? (char *)p : 0;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册