mirror of https://github.com/mkerrisk/man-pages
120 lines
3.1 KiB
Plaintext
120 lines
3.1 KiB
Plaintext
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
|
.TH "STRCPY" P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
|
.\" strcpy
|
|
.SH NAME
|
|
strcpy \- copy a string
|
|
.SH SYNOPSIS
|
|
.LP
|
|
\fB#include <string.h>
|
|
.br
|
|
.sp
|
|
char *strcpy(char *restrict\fP \fIs1\fP\fB, const char *restrict\fP
|
|
\fIs2\fP\fB);
|
|
.br
|
|
\fP
|
|
.SH DESCRIPTION
|
|
.LP
|
|
The \fIstrcpy\fP() function shall copy the string pointed to by \fIs2\fP
|
|
(including the terminating null byte) into the array
|
|
pointed to by \fIs1\fP. If copying takes place between objects that
|
|
overlap, the behavior is undefined.
|
|
.SH RETURN VALUE
|
|
.LP
|
|
The \fIstrcpy\fP() function shall return \fIs1\fP; no return value
|
|
is reserved to indicate an error.
|
|
.SH ERRORS
|
|
.LP
|
|
No errors are defined.
|
|
.LP
|
|
\fIThe following sections are informative.\fP
|
|
.SH EXAMPLES
|
|
.SS Initializing a String
|
|
.LP
|
|
The following example copies the string \fB"----------"\fP into the
|
|
\fIpermstring\fP variable.
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB#include <string.h>
|
|
\&...
|
|
static char permstring[11];
|
|
\&...
|
|
strcpy(permstring, "----------");
|
|
\&...
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.SS Storing a Key and Data
|
|
.LP
|
|
The following example allocates space for a key using \fImalloc\fP()
|
|
then uses
|
|
\fIstrcpy\fP() to place the key there. Then it allocates space for
|
|
data using \fImalloc\fP(), and uses \fIstrcpy\fP() to place data there.
|
|
(The user-defined function
|
|
\fIdbfree\fP() frees memory previously allocated to an array of type
|
|
\fBstruct element *\fP.)
|
|
.sp
|
|
.RS
|
|
.nf
|
|
|
|
\fB#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
\&...
|
|
/* Structure used to read data and store it. */
|
|
struct element {
|
|
char *key;
|
|
char *data;
|
|
};
|
|
.sp
|
|
|
|
struct element *tbl, *curtbl;
|
|
char *key, *data;
|
|
int count;
|
|
\&...
|
|
void dbfree(struct element *, int);
|
|
\&...
|
|
if ((curtbl->key = malloc(strlen(key) + 1)) == NULL) {
|
|
perror("malloc"); dbfree(tbl, count); return NULL;
|
|
}
|
|
strcpy(curtbl->key, key);
|
|
.sp
|
|
|
|
if ((curtbl->data = malloc(strlen(data) + 1)) == NULL) {
|
|
perror("malloc"); free(curtbl->key); dbfree(tbl, count); return NULL;
|
|
}
|
|
strcpy(curtbl->data, data);
|
|
\&...
|
|
\fP
|
|
.fi
|
|
.RE
|
|
.SH APPLICATION USAGE
|
|
.LP
|
|
Character movement is performed differently in different implementations.
|
|
Thus, overlapping moves may yield surprises.
|
|
.LP
|
|
This issue is aligned with the ISO\ C standard; this does not affect
|
|
compatibility with XPG3 applications. Reliable error
|
|
detection by this function was never guaranteed.
|
|
.SH RATIONALE
|
|
.LP
|
|
None.
|
|
.SH FUTURE DIRECTIONS
|
|
.LP
|
|
None.
|
|
.SH SEE ALSO
|
|
.LP
|
|
\fIstrncpy\fP() , the Base Definitions volume of IEEE\ Std\ 1003.1-2001,
|
|
\fI<string.h>\fP
|
|
.SH COPYRIGHT
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
Specifications Issue 6, Copyright (C) 2001-2003 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 .
|