.TH STRCAT 3
.SH NAME
strcat, strncat, strcmp, strncmp, cistrcmp, cistrncmp, strcpy, strncpy, strecpy, strlen, strchr, strrchr, strpbrk, strspn, strcspn, strtok, strdup, strstr, cistrstr \- string operations
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.ta \w'\fLchar* \fP'u
.B
char*	strcat(char *s1, char *s2)
.PP
.B
char*	strncat(char *s1, char *s2, long n)
.PP
.B
int	strcmp(char *s1, char *s2)
.PP
.B
int	strncmp(char *s1, char *s2, long n)
.PP
.B
int	cistrcmp(char *s1, char *s2)
.PP
.B
int	cistrncmp(char *s1, char *s2, long n)
.PP
.B
char*	strcpy(char *s1, char *s2)
.PP
.B
char*	strecpy(char *s1, char *es1, char *s2)
.PP
.B
char*	strncpy(char *s1, char *s2, long n)
.PP
.B
long	strlen(char *s)
.PP
.B
char*	strchr(char *s, char c)
.PP
.B
char*	strrchr(char *s, char c)
.PP
.B
char*	strpbrk(char *s1, char *s2)
.PP
.B
long	strspn(char *s1, char *s2)
.PP
.B
long	strcspn(char *s1, char *s2)
.PP
.B
char*	strtok(char *s1, char *s2)
.PP
.B
char*	strdup(char *s)
.PP
.B
char*	strstr(char *s1, char *s2)
.PP
.B
char*	cistrstr(char *s1, char *s2)
.SH DESCRIPTION
The arguments
.I s1, s2
and
.I s
point to null-terminated strings.
The functions
.IR strcat ,
.IR strncat ,
.IR strcpy ,
.IR strecpy ,
and
.I strncpy
all alter
.IR s1 .
.I Strcat
and
.I strcpy
do not check for overflow of
the array pointed to by
.IR s1 .
.PP
.I Strcat
appends a copy of string
.I s2
to the end of string
.IR s1 .
.I Strncat
appends at most
.I n
bytes.
Each returns a pointer to the null-terminated result.
.PP
.I Strcmp
compares its arguments and returns an integer
less than, equal to, or greater than 0,
according as
.I s1
is lexicographically less than, equal to, or
greater than
.IR s2 .
.I Strncmp
makes the same comparison but examines at most
.I n
bytes.
.I Cistrcmp
and
.I cistrncmp
ignore ASCII case distinctions when comparing strings.
The comparisons are made with unsigned bytes.
.PP
.I Strcpy
copies string
.I s2
to
.IR s1 ,
stopping after the null byte has been copied.
.I Strncpy
copies exactly
.I n
bytes,
truncating
.I s2
or adding
null bytes to
.I s1
if necessary.
The result will not be null-terminated if the length
of
.I s2
is
.I n
or more.
Each function returns
.IR s1 .
.PP
.I Strecpy
copies bytes until a null byte has been copied, but writes no bytes beyond
.IR es1 .
If any bytes are copied,
.I s1
is terminated by a null byte, and a pointer to that byte is returned.
Otherwise, the original
.I s1
is returned.
.PP
.I Strlen
returns the number of bytes in
.IR s ,
not including the terminating null byte.
.PP
.I Strchr
.RI ( strrchr )
returns a pointer to the first (last)
occurrence of byte
.I c
in string
.IR s ,
or
.L 0
if
.I c
does not occur in the string.
The null byte terminating a string is considered to
be part of the string.
.PP
.I Strpbrk
returns a pointer to the first occurrence in string
.I s1
of any byte from string
.IR s2 ,
.L 0
if no byte from
.I s2
exists in
.IR s1 .
.PP
.I Strspn
.RI ( strcspn )
returns the length of the initial segment of string
.I s1
which consists entirely of bytes from (not from) string
.IR s2 .
.PP
.I Strtok
considers the string
.I s1
to consist of a sequence of zero or more text tokens separated
by spans of one or more bytes from the separator string
.IR s2 .
The first call, with pointer
.I s1
specified, returns a pointer to the first byte of the first
token, and will have written a
null byte into
.I s1
immediately following the returned token.
The function
keeps track of its position in the string
between separate calls; subsequent calls,
signified by
.I s1
being
.LR 0 ,
will work through the string
.I s1
immediately following that token.
The separator string
.I s2
may be different from call to call.
When no token remains in
.IR s1 ,
.L 0
is returned.
.PP
.I Strdup
returns a pointer to a distinct copy of the null-terminated string
.I s
in space obtained from
.IR malloc (3)
or
.L 0
if no space can be obtained.
.PP
.I Strstr
returns a pointer to the first occurrence of
.I s2
as a substring of
.IR s1 ,
or 0 if there is none.
If
.I s2
is the null string,
.I strstr
returns
.IR s1 .
.I Cistrstr
operates analogously, but ignores ASCII case differences when comparing strings.
.SH SOURCE
.B \*9/src/lib9
.SH SEE ALSO
.IR memory (3),
.IR rune (3),
.IR runestrcat (3)
.SH BUGS
These routines know nothing about
.SM UTF.
Use the routines in
.IR rune (3)
as appropriate.
Note, however, that the definition of
.SM UTF
guarantees that
.I strcmp
compares
.SM UTF
strings correctly.
.PP
The outcome of overlapping moves varies among implementations.
