Zauważyłem, że był (przynajmniej w systemie Mac OS X) zarówno <string.h>
nagłówek, jak i <strings.h>
nagłówek. man 3 string
ujawnia, że mają one różne funkcje. Czy jest jakiś powód?
91
Zauważyłem, że był (przynajmniej w systemie Mac OS X) zarówno <string.h>
nagłówek, jak i <strings.h>
nagłówek. man 3 string
ujawnia, że mają one różne funkcje. Czy jest jakiś powód?
strings.h
zawiera niestandardowe funkcjebcmp bcopy bzero ffs index rindex strcasecmp strncasecmp
… i to wszystko.Odpowiedzi:
strings.h pochodzi z gałęzi BSD w ewolucji unixa. Jego zawartość została ustandaryzowana przez POSIX, ale większość z nich jest oznaczona jako starsza i można ją łatwo zastąpić innymi funkcjami:
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);
źródło
strings.h
dostring.h
. Zobacz np . Glibc .Zwykle
<strings.h>
dodaje do standardowego nagłówka kilka przydatnych, ale niestandardowych, dodatkowych funkcji łańcuchowych<string.h>
. Aby uzyskać maksymalną przenośność, powinieneś używać tylko,<string.h>
ale jeśli potrzebujesz funkcji w<strings.h>
więcej niż potrzebujesz, możesz użyć<strings.h>
zamiast<string.h>
.źródło
ffs
może się przydać.