1 cfa37a7b 2004-04-10 devnull .TH STRCAT 3
3 cfa37a7b 2004-04-10 devnull strcat, strncat, strcmp, strncmp, cistrcmp, cistrncmp, strcpy, strncpy, strecpy, strlen, strchr, strrchr, strpbrk, strspn, strcspn, strtok, strdup, strstr, cistrstr \- string operations
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
9 cfa37a7b 2004-04-10 devnull .ta \w'\fLchar* \fP'u
11 cfa37a7b 2004-04-10 devnull char* strcat(char *s1, char *s2)
14 cfa37a7b 2004-04-10 devnull char* strncat(char *s1, char *s2, long n)
17 cfa37a7b 2004-04-10 devnull int strcmp(char *s1, char *s2)
20 cfa37a7b 2004-04-10 devnull int strncmp(char *s1, char *s2, long n)
23 cfa37a7b 2004-04-10 devnull int cistrcmp(char *s1, char *s2)
26 cfa37a7b 2004-04-10 devnull int cistrncmp(char *s1, char *s2, long n)
29 cfa37a7b 2004-04-10 devnull char* strcpy(char *s1, char *s2)
32 cfa37a7b 2004-04-10 devnull char* strecpy(char *s1, char *es1, char *s2)
35 cfa37a7b 2004-04-10 devnull char* strncpy(char *s1, char *s2, long n)
38 cfa37a7b 2004-04-10 devnull long strlen(char *s)
41 cfa37a7b 2004-04-10 devnull char* strchr(char *s, char c)
44 cfa37a7b 2004-04-10 devnull char* strrchr(char *s, char c)
47 cfa37a7b 2004-04-10 devnull char* strpbrk(char *s1, char *s2)
50 cfa37a7b 2004-04-10 devnull long strspn(char *s1, char *s2)
53 cfa37a7b 2004-04-10 devnull long strcspn(char *s1, char *s2)
56 cfa37a7b 2004-04-10 devnull char* strtok(char *s1, char *s2)
59 cfa37a7b 2004-04-10 devnull char* strdup(char *s)
62 cfa37a7b 2004-04-10 devnull char* strstr(char *s1, char *s2)
65 cfa37a7b 2004-04-10 devnull char* cistrstr(char *s1, char *s2)
66 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
67 cfa37a7b 2004-04-10 devnull The arguments
68 cfa37a7b 2004-04-10 devnull .I s1, s2
71 cfa37a7b 2004-04-10 devnull point to null-terminated strings.
72 cfa37a7b 2004-04-10 devnull The functions
73 cfa37a7b 2004-04-10 devnull .IR strcat ,
74 cfa37a7b 2004-04-10 devnull .IR strncat ,
75 cfa37a7b 2004-04-10 devnull .IR strcpy ,
76 cfa37a7b 2004-04-10 devnull .IR strecpy ,
78 cfa37a7b 2004-04-10 devnull .I strncpy
79 cfa37a7b 2004-04-10 devnull all alter
81 cfa37a7b 2004-04-10 devnull .I Strcat
83 cfa37a7b 2004-04-10 devnull .I strcpy
84 cfa37a7b 2004-04-10 devnull do not check for overflow of
85 cfa37a7b 2004-04-10 devnull the array pointed to by
88 cfa37a7b 2004-04-10 devnull .I Strcat
89 cfa37a7b 2004-04-10 devnull appends a copy of string
91 cfa37a7b 2004-04-10 devnull to the end of string
93 cfa37a7b 2004-04-10 devnull .I Strncat
94 cfa37a7b 2004-04-10 devnull appends at most
97 cfa37a7b 2004-04-10 devnull Each returns a pointer to the null-terminated result.
99 cfa37a7b 2004-04-10 devnull .I Strcmp
100 cfa37a7b 2004-04-10 devnull compares its arguments and returns an integer
101 cfa37a7b 2004-04-10 devnull less than, equal to, or greater than 0,
102 cfa37a7b 2004-04-10 devnull according as
104 cfa37a7b 2004-04-10 devnull is lexicographically less than, equal to, or
105 cfa37a7b 2004-04-10 devnull greater than
106 cfa37a7b 2004-04-10 devnull .IR s2 .
107 cfa37a7b 2004-04-10 devnull .I Strncmp
108 cfa37a7b 2004-04-10 devnull makes the same comparison but examines at most
111 cfa37a7b 2004-04-10 devnull .I Cistrcmp
113 cfa37a7b 2004-04-10 devnull .I cistrncmp
114 cfa37a7b 2004-04-10 devnull ignore ASCII case distinctions when comparing strings.
115 cfa37a7b 2004-04-10 devnull The comparisons are made with unsigned bytes.
117 cfa37a7b 2004-04-10 devnull .I Strcpy
118 cfa37a7b 2004-04-10 devnull copies string
121 cfa37a7b 2004-04-10 devnull .IR s1 ,
122 cfa37a7b 2004-04-10 devnull stopping after the null byte has been copied.
123 cfa37a7b 2004-04-10 devnull .I Strncpy
124 cfa37a7b 2004-04-10 devnull copies exactly
127 cfa37a7b 2004-04-10 devnull truncating
129 cfa37a7b 2004-04-10 devnull or adding
130 cfa37a7b 2004-04-10 devnull null bytes to
132 cfa37a7b 2004-04-10 devnull if necessary.
133 cfa37a7b 2004-04-10 devnull The result will not be null-terminated if the length
138 cfa37a7b 2004-04-10 devnull or more.
139 cfa37a7b 2004-04-10 devnull Each function returns
140 cfa37a7b 2004-04-10 devnull .IR s1 .
142 cfa37a7b 2004-04-10 devnull .I Strecpy
143 cfa37a7b 2004-04-10 devnull copies bytes until a null byte has been copied, but writes no bytes beyond
144 cfa37a7b 2004-04-10 devnull .IR es1 .
145 cfa37a7b 2004-04-10 devnull If any bytes are copied,
147 cfa37a7b 2004-04-10 devnull is terminated by a null byte, and a pointer to that byte is returned.
148 cfa37a7b 2004-04-10 devnull Otherwise, the original
150 cfa37a7b 2004-04-10 devnull is returned.
152 cfa37a7b 2004-04-10 devnull .I Strlen
153 cfa37a7b 2004-04-10 devnull returns the number of bytes in
155 cfa37a7b 2004-04-10 devnull not including the terminating null byte.
157 cfa37a7b 2004-04-10 devnull .I Strchr
158 cfa37a7b 2004-04-10 devnull .RI ( strrchr )
159 cfa37a7b 2004-04-10 devnull returns a pointer to the first (last)
160 cfa37a7b 2004-04-10 devnull occurrence of byte
162 cfa37a7b 2004-04-10 devnull in string
168 cfa37a7b 2004-04-10 devnull does not occur in the string.
169 cfa37a7b 2004-04-10 devnull The null byte terminating a string is considered to
170 cfa37a7b 2004-04-10 devnull be part of the string.
172 cfa37a7b 2004-04-10 devnull .I Strpbrk
173 cfa37a7b 2004-04-10 devnull returns a pointer to the first occurrence in string
175 cfa37a7b 2004-04-10 devnull of any byte from string
176 cfa37a7b 2004-04-10 devnull .IR s2 ,
178 cfa37a7b 2004-04-10 devnull if no byte from
180 cfa37a7b 2004-04-10 devnull exists in
181 cfa37a7b 2004-04-10 devnull .IR s1 .
183 cfa37a7b 2004-04-10 devnull .I Strspn
184 cfa37a7b 2004-04-10 devnull .RI ( strcspn )
185 cfa37a7b 2004-04-10 devnull returns the length of the initial segment of string
187 cfa37a7b 2004-04-10 devnull which consists entirely of bytes from (not from) string
188 cfa37a7b 2004-04-10 devnull .IR s2 .
190 cfa37a7b 2004-04-10 devnull .I Strtok
191 cfa37a7b 2004-04-10 devnull considers the string
193 cfa37a7b 2004-04-10 devnull to consist of a sequence of zero or more text tokens separated
194 cfa37a7b 2004-04-10 devnull by spans of one or more bytes from the separator string
195 cfa37a7b 2004-04-10 devnull .IR s2 .
196 cfa37a7b 2004-04-10 devnull The first call, with pointer
198 cfa37a7b 2004-04-10 devnull specified, returns a pointer to the first byte of the first
199 cfa37a7b 2004-04-10 devnull token, and will have written a
200 cfa37a7b 2004-04-10 devnull null byte into
202 cfa37a7b 2004-04-10 devnull immediately following the returned token.
203 cfa37a7b 2004-04-10 devnull The function
204 cfa37a7b 2004-04-10 devnull keeps track of its position in the string
205 cfa37a7b 2004-04-10 devnull between separate calls; subsequent calls,
206 cfa37a7b 2004-04-10 devnull signified by
210 cfa37a7b 2004-04-10 devnull will work through the string
212 cfa37a7b 2004-04-10 devnull immediately following that token.
213 cfa37a7b 2004-04-10 devnull The separator string
215 cfa37a7b 2004-04-10 devnull may be different from call to call.
216 cfa37a7b 2004-04-10 devnull When no token remains in
217 cfa37a7b 2004-04-10 devnull .IR s1 ,
219 cfa37a7b 2004-04-10 devnull is returned.
221 cfa37a7b 2004-04-10 devnull .I Strdup
222 cfa37a7b 2004-04-10 devnull returns a pointer to a distinct copy of the null-terminated string
224 cfa37a7b 2004-04-10 devnull in space obtained from
225 bf8a59fa 2004-04-11 devnull .IR malloc (3)
228 cfa37a7b 2004-04-10 devnull if no space can be obtained.
230 cfa37a7b 2004-04-10 devnull .I Strstr
231 cfa37a7b 2004-04-10 devnull returns a pointer to the first occurrence of
233 cfa37a7b 2004-04-10 devnull as a substring of
234 cfa37a7b 2004-04-10 devnull .IR s1 ,
235 cfa37a7b 2004-04-10 devnull or 0 if there is none.
238 cfa37a7b 2004-04-10 devnull is the null string,
239 cfa37a7b 2004-04-10 devnull .I strstr
241 cfa37a7b 2004-04-10 devnull .IR s1 .
242 cfa37a7b 2004-04-10 devnull .I Cistrstr
243 cfa37a7b 2004-04-10 devnull operates analogously, but ignores ASCII case differences when comparing strings.
244 cfa37a7b 2004-04-10 devnull .SH SOURCE
245 058b0118 2005-01-03 devnull .B /usr/local/plan9/src/lib9
246 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
247 bf8a59fa 2004-04-11 devnull .IR memory (3),
248 bf8a59fa 2004-04-11 devnull .IR rune (3),
249 bf8a59fa 2004-04-11 devnull .IR runestrcat (3)
250 cfa37a7b 2004-04-10 devnull .SH BUGS
251 cfa37a7b 2004-04-10 devnull These routines know nothing about
252 cfa37a7b 2004-04-10 devnull .SM UTF.
253 cfa37a7b 2004-04-10 devnull Use the routines in
254 bf8a59fa 2004-04-11 devnull .IR rune (3)
255 cfa37a7b 2004-04-10 devnull as appropriate.
256 cfa37a7b 2004-04-10 devnull Note, however, that the definition of
258 cfa37a7b 2004-04-10 devnull guarantees that
259 cfa37a7b 2004-04-10 devnull .I strcmp
260 cfa37a7b 2004-04-10 devnull compares
262 cfa37a7b 2004-04-10 devnull strings correctly.
264 cfa37a7b 2004-04-10 devnull The outcome of overlapping moves varies among implementations.