I&#x27;m late to this discussion, but did you possibly miss stpcpy() and its variants? Or is something about them that doesn&#x27;t meet your needs?<p><pre><code>  STPCPY(3)      Linux Programmer&#x27;s Manual                                      

  NAME
       stpcpy - copy a string returning a pointer to its end

  SYNOPSIS
       #include &lt;string.h&gt;

       char *stpcpy(char *dest, const char *src);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       stpcpy():
           Since glibc 2.10:
               _XOPEN_SOURCE &gt;= 700 || _POSIX_C_SOURCE &gt;= 200809L
           Before glibc 2.10:
               _GNU_SOURCE

  DESCRIPTION
       The  stpcpy()  function  copies the string pointed to
       by src (including the terminating null byte (&#x27;\0&#x27;)) to the
       array pointed to by dest.  The strings may not overlap,
       and the destination string dest must be large enough  to
       receive the copy.

  RETURN VALUE
       stpcpy()  returns  a  pointer  to the end of the string
       dest (that is, the address of the terminating null byte)
       rather than the beginning.

  CONFORMING TO
       This function was added to POSIX.1-2008.  Before that, it
       was not part of the C or POSIX.1 standards,  nor  customary
       on UNIX systems, but was not a GNU invention either. Perhaps 
       it came from MS-DOS.  It is also present on the BSDs.

  BUGS
       This function may overrun the buffer dest.

  EXAMPLE
       For example, this program uses stpcpy() to concatenate foo 
       and bar to produce foobar, which it then prints.

           #define _GNU_SOURCE
           #include &lt;string.h&gt;
           #include &lt;stdio.h&gt;

           int
           main(void)
           {
               char buffer[20];
               char *to = buffer;

               to = stpcpy(to, &quot;foo&quot;);
               to = stpcpy(to, &quot;bar&quot;);
               printf(&quot;%s\n&quot;, buffer);
           }

  SEE ALSO
       memccpy(3), stpncpy(3), wcpcpy(3)</code></pre>