Я заметил, что есть (по крайней мере, в Mac OS X) и <string.h>
заголовок, и <strings.h>
заголовок. man 3 string
показывает, что они содержат разные функции. Есть ли этому повод?
91
Я заметил, что есть (по крайней мере, в Mac OS X) и <string.h>
заголовок, и <strings.h>
заголовок. man 3 string
показывает, что они содержат разные функции. Есть ли этому повод?
strings.h
содержит нестандартные функцииbcmp bcopy bzero ffs index rindex strcasecmp strncasecmp
… и все.Ответы:
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);
источник
strings.h
вstring.h
. См., Например, Glibc .Обычно
<strings.h>
просто добавляет в стандартный заголовок несколько полезных, но нестандартных дополнительных строковых функций<string.h>
. Для максимальной переносимости вы должны только использовать,<string.h>
но если вам нужны функции<strings.h>
больше, чем вам нужна переносимость, вы можете использовать<strings.h>
вместо<string.h>
.источник
ffs
возможно полезно.