string.h(7POSIX)

πŸ’– PROLOG πŸ’–

okay so bestie, before we even get into it, a lil heads up about this page: it's part of the POSIX Programmer's Manual. That means the Linux implementation of this interface might be different (so if something's weird, go check the matching Linux manual page for the real Linux tea), or honestly it might just not be implemented on Linux at all. πŸ’€


✨ NAME ✨

string.h β€” string operations πŸŽ€


🌸 SYNOPSIS 🌸

#include <string.h>

πŸ¦‹ DESCRIPTION πŸ¦‹

So some of the stuff described on this reference page actually goes beyond the ISO C standard β€” it's giving extended, extra-credit behavior. If you want those symbols to even show up in this header, your app shall define the right feature test macro (peep the System Interfaces volume of POSIX.1‐2017, Section 2.2, The Compilation Environment for the details). No macro, no visibility, periodt.

The <string.h> header shall define NULL and size_t just like they're described in <stddef.h>.

The <string.h> header shall define the locale_t type as described in <locale.h>.

Now here's the main character lineup β€” the following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided for use with ISO C standard compilers:

void    *memccpy(void *restrict, const void *restrict, int, size_t);
void    *memchr(const void *, int, size_t);
int      memcmp(const void *, const void *, size_t);
void    *memcpy(void *restrict, const void *restrict, size_t);
void    *memmove(void *, const void *, size_t);
void    *memset(void *, int, size_t);
char    *stpcpy(char *restrict, const char *restrict);
char    *stpncpy(char *restrict, const char *restrict, size_t);
char    *strcat(char *restrict, const char *restrict);
char    *strchr(const char *, int);
int      strcmp(const char *, const char *);
int      strcoll(const char *, const char *);
int      strcoll_l(const char *, const char *, locale_t);
char    *strcpy(char *restrict, const char *restrict);
size_t   strcspn(const char *, const char *);
char    *strdup(const char *);
char    *strerror(int);
char    *strerror_l(int, locale_t);
int      strerror_r(int, char *, size_t);
size_t   strlen(const char *);
char    *strncat(char *restrict, const char *restrict, size_t);
int      strncmp(const char *, const char *, size_t);
char    *strncpy(char *restrict, const char *restrict, size_t);
char    *strndup(const char *, size_t);
size_t   strnlen(const char *, size_t);
char    *strpbrk(const char *, const char *);
char    *strrchr(const char *, int);
char    *strsignal(int);
size_t   strspn(const char *, const char *);
char    *strstr(const char *, const char *);
char    *strtok(char *restrict, const char *restrict);
char    *strtok_r(char *restrict, const char *restrict, char **restrict);
size_t   strxfrm(char *restrict, const char *restrict, size_t);
size_t   strxfrm_l(char *restrict, const char *restrict,
             size_t, locale_t);

Also, lowkey a bonus: including the <string.h> header may also make all the symbols from <stddef.h> visible. Surprise gift. 🎁

And heads up, the next few sections are informative (aka they're not the normative rules, they're just context).


πŸ™ˆ APPLICATION USAGE πŸ™ˆ

None. Nothing here. Empty. The void. πŸ’€


🧚 RATIONALE 🧚

None. Also empty. She said nothing and left. ✨


🌈 FUTURE DIRECTIONS 🌈

None. No plans, no notes, no glow-up scheduled. πŸ¦‹


πŸ‘‘ SEE ALSO πŸ‘‘

  • <locale.h>
  • <stddef.h>
  • <sys_types.h>

And from the System Interfaces volume of POSIX.1‐2017, Section 2.2, The Compilation Environment, plus these absolute icons:

memccpy(), memchr(), memcmp(), memcpy(), memmove(), memset(), strcat(), strchr(), strcmp(), strcoll(), strcpy(), strcspn(), strdup(), strerror(), strlen(), strncat(), strncmp(), strncpy(), strpbrk(), strrchr(), strsignal(), strspn(), strstr(), strtok(), strxfrm()


okay bestie, legal moment, don't skip this part β€” it's giving important:

Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .

fr fr, if something looks off between this page and the actual standard, the standard wins. no cap. πŸ‘‘

and that's the whole page, bestie β€” brought to you by IEEE/The Open Group, dated 2017, filed under string.h(7POSIX). πŸ«ΆπŸ’œ

go forth and #include <string.h>, you've got this. mwah. πŸ’–