<string.h>和<strings.h&gt之间的区别。

问题描述 投票:89回答:2

我注意到(至少在Mac OS X上)同时存在着一个 <string.h> 头部和一个 <strings.h> 头。man 3 string 发现它们包含不同的功能。这有什么原因吗?

c string header
2个回答
114
投票

strings.h来自于unix演化中的BSD分支。 它的内容已经被POSIX标准化了,但大部分被标记为遗留,可以很容易地用其他函数替换。

int    bcmp(const void *, const void *, size_t); /* LEGACY, see memcmp */
void   bcopy(const void *, void *, size_t); /* LEGACY, see memcpy, memmove */
void   bzero(void *, size_t); /* LEGACY, see memset */
int    ffs(int);
char  *index(const char *, int); /* LEGACY, see strchr */
char  *rindex(const char *, int); /* LEGACY, see strrchr */
int    strcasecmp(const char *, const char *);
int    strncasecmp(const char *, const char *, size_t);

19
投票

通常情况下 <strings.h> 只是在标准头中添加了一些有用的但非标准的附加字符串函数。<string.h>. 为了达到最大的便携性,您应该只使用 <string.h> 但如果你需要在 <strings.h> 比你需要的便携性更多,那么你就可以使用。<strings.h> 而不是 <string.h>.

© www.soinside.com 2019 - 2024. All rights reserved.