Copy end of string in C

25,492

Solution 1

Just pass the address of the first letter you want to copy: strcpy(dest, &c[13]).

If you want to end before the string ends, use strncpy or, better, memcpy (don't forget to 0-terminate the copied string).

Solution 2

strncpy is (essentially always) the wrong choice. In this specific case, it'll work, but only pretty much by accident -- since you're copying the end of a string, it'll work just like strcpy. That of course, leads to the fact that strcpy will work too, but more easily.

If you want to handle a more general case, there's a rather surprising (but highly effective) choice: sprintf can do exactly what you want:

sprintf(d, "%s", c+20);

sprintf (unlike strncpy or strcpy) also works for the most general case -- let's assume you wanted to copy just do I to d, but have d come out as a properly NUL-terminated string:

sprintf(d, "%*s", 4, c+13);

Here, the 4 is the length of the section to copy, and c+13 is a pointer to the beginning of the part to copy.

Share:
25,492
Church
Author by

Church

Updated on July 09, 2022

Comments

  • Church
    Church almost 2 years

    I am trying to use strncpy to only copy part of a string to another string in C.

    Such as:

    c[] = "How the heck do I do this";
    

    Then copy "do this" to the other string, such that:

    d[] = "do this"
    

    Help is appreciated.