Разница между string.h и strings.h - PullRequest
86 голосов
/ 27 ноября 2010

Я заметил, что есть (по крайней мере в Mac OS X) заголовок string.h и заголовок strings.h man 3 string показывает, что они содержат разные функции. Есть ли причина для этого?

Ответы [ 2 ]

106 голосов
/ 27 ноября 2010

strings.h происходит из ветви BSD в эволюции Unix.Его содержимое было стандартизировано 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);
17 голосов
/ 27 ноября 2010

Обычно <strings.h> просто добавляет некоторые полезные, но нестандартные дополнительные строковые функции к стандартному заголовку <string.h>.Для максимальной переносимости вы должны использовать только <string.h>, но если вам нужно, чтобы функции на <strings.h> превышали переносимость, вы можете использовать <strings.h> вместо <string.h>.

...