logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface

Application Usage

       Character  movement  is  performed  differently in different implementations. Thus, overlapping moves may
       yield surprises.

       This version is  aligned  with  the  ISO C  standard;  this  does  not  affect  compatibility  with  XPG3
       applications. Reliable error detection by this function was never guaranteed.

Description

       For  strcpy(): The functionality described on this reference page is aligned with the ISO C standard. Any
       conflict between the requirements described here and the ISO C standard is unintentional. This volume  of
       POSIX.1‐2017 defers to the ISO C standard.

       The stpcpy() and strcpy() functions shall copy the string pointed to by s2 (including the terminating NUL
       character) into the array pointed to by s1.

       If copying takes place between objects that overlap, the behavior is undefined.

Errors

       No errors are defined.

       Thefollowingsectionsareinformative.

Examples

ConstructionofaMulti-PartMessageinaSingleBuffer
           #include <string.h>
           #include <stdio.h>

           int
           main (void)
           {
               char buffer [10];
               char *name = buffer;

               name = stpcpy (stpcpy (stpcpy (name, "ice"),"-"), "cream");
               puts (buffer);
               return 0;
           }

   InitializingaString
       The following example copies the string "----------" into the permstring variable.

           #include <string.h>
           ...
           static char permstring[11];
           ...
           strcpy(permstring, "----------");
           ...

   StoringaKeyandData
       The following example allocates space for a key using malloc() then uses strcpy() to place the key there.
       Then it allocates space for data using malloc(), and uses strcpy() to place data there. (The user-defined
       function dbfree() frees memory previously allocated to an array of type structelement*.)

           #include <string.h>
           #include <stdlib.h>
           #include <stdio.h>
           ...
           /* Structure used to read data and store it. */
           struct element {
               char *key;
               char *data;
           };

           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);

           if ((curtbl->data = malloc(strlen(data) + 1)) == NULL) {
               perror("malloc"); free(curtbl->key); dbfree(tbl, count); return NULL;
           }
           strcpy(curtbl->data, data);
           ...

Future Directions

       None.

Name

       stpcpy, strcpy — copy a string and return a pointer to the end of the result

Prolog

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

Rationale

       None.

Return Value

       The stpcpy() function shall return a pointer to the terminating NUL character copied into the s1 buffer.

       The strcpy() function shall return s1.

       No return values are reserved to indicate an error.

See Also

strncpy(), wcscpy()

       The Base Definitions volume of POSIX.1‐2017, <string.h>

Synopsis

       #include <string.h>

       char *stpcpy(char *restrict s1, const char *restrict s2);
       char *strcpy(char *restrict s1, const char *restrict s2);

See Also