Most declarations of functions from /usr/include/string.h
Linux, SuSE 7.3, gcc -v 2.95.3

/* Copy N bytes of SRC to DEST. */ extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n); /* Copy N bytes of SRC to DEST, guaranteeing correct behavior for overlapping strings. */ extern void *memmove (void *__dest, __const void *__src, size_t __n); /* Copy no more than N bytes of SRC to DEST, stopping when C is found. Return the position in DEST one byte past where C was copied, or NULL if C was not found in the first N bytes of SRC. */ extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n); /* Set N bytes of S to C. */ extern void *memset (void *__s, int __c, size_t __n); /* Compare N bytes of S1 and S2. */ extern int memcmp (__const void *__s1, __const void *__s2, size_t __n); /* Search N bytes of S for C. */ extern void *memchr (__const void *__s, int __c, size_t __n); /* Search N bytes of S for the final occurrence of C. */ extern void *memrchr (__const void *__s, int __c, size_t __n); /* Copy SRC to DEST. */ extern char *strcpy (char *__restrict __dest, __const char *__restrict __src); /* Copy no more than N characters of SRC to DEST.*/ extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n); /* Append SRC onto DEST. */ extern char *strcat (char *__restrict __dest, __const char *__restrict __src); /* Append no more than N characters from SRC onto DEST.*/ extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n); /* Compare S1 and S2. */ extern int strcmp (__const char *__s1, __const char *__s2); /* Compare N characters of S1 and S2.*/ extern int strncmp (__const char *__s1, __const char *__s2, size_t __n); /* Duplicate S, returning an identical malloc'd string. */ extern char *strdup (__const char *__s); /* Return a malloc'd copy of at most N bytes of STRING. The resultant string is terminated even if no null terminator appears before STRING[N]. */ extern char *strndup (__const char *__string, size_t __n); /* Find the first occurrence of C in S. */ extern char *strchr (__const char *__s, int __c); /* Find the last occurrence of C in S. */ extern char *strrchr (__const char *__s, int __c); /* Return the length of the initial segment of S which consists entirely of characters not in REJECT. */ extern size_t strcspn (__const char *__s, __const char *__reject); /* Return the length of the initial segment of S which consists entirely of characters in ACCEPT. */ extern size_t strspn (__const char *__s, __const char *__accept); /* Find the first occurrence in S of any character in ACCEPT. */ extern char *strpbrk (__const char *__s, __const char *__accept); /* Find the first occurrence of NEEDLE in HAYSTACK. */ extern char *strstr (__const char *__haystack, __const char *__needle); /* Similar to `strstr' but this function ignores the case of both strings. */ extern char *strcasestr (__const char *__haystack, __const char *__needle); /* Divide S into tokens separated by characters in DELIM. */ extern char *strtok (char *__restrict __s, __const char *__restrict __delim); /* Find the first occurrence of NEEDLE in HAYSTACK. NEEDLE is NEEDLELEN bytes long; HAYSTACK is HAYSTACKLEN bytes long. */ extern void *memmem (__const void *__haystack, size_t __haystacklen, __const void *__needle, size_t __needlelen); /* Return the length of S. */ extern size_t strlen (__const char *__s); /* Find the length of STRING, but scan at most MAXLEN characters. If no '\0' terminator is found in that many characters, return MAXLEN. */ extern size_t strnlen (__const char *__string, size_t __maxlen); /* Return a string describing the meaning of the `errno' code in ERRNUM. */ extern char *strerror (int __errnum); #if defined __USE_BSD /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ extern void bcopy (__const void *__src, void *__dest, size_t __n); /* Set N bytes of S to 0. */ extern void bzero (void *__s, size_t __n); /* Compare N bytes of S1 and S2 (same as memcmp). */ extern int bcmp (__const void *__s1, __const void *__s2, size_t __n); /* Find the first occurrence of C in S (same as strchr). */ extern char *index (__const char *__s, int __c);__; /* Find the last occurrence of C in S (same as strrchr). */ extern char *rindex (__const char *__s, int __c);__; /* Compare S1 and S2, ignoring case. */ extern int strcasecmp (__const char *__s1, __const char *__s2); /* Compare no more than N chars of S1 and S2, ignoring case. */ extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n); #endif /* Use BSD. */ /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src); /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ extern char *stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n); /* Return the file name within directory of FILENAME. We don't declare the function if the `basename' macro is available (defined in <libgen.h>) which makes the XPG version of this function available. */ extern char *basename (__const char *__filename);