Это потому, что первый символ в txbuffer
является нулевым \0
.(Вы инициализировали это таким образом.) Таким образом, строка при печати выдает нулевую длину.
Вы не перезаписали первый символ в первой или второй копии.Но вы, наконец, перезаписать его в 3-й копии.Вот почему длина равна нулю до 3-й копии.
// Start
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
// After 1st memcpy(): strlen() is still zero
{ 0, 'a', 'b', 'c', 0, 0, 0, 0, 0, 0, 0, 0, 0}
^ first null character
// After 2nd memcpy(): strlen() is still zero
{ 0, 'a', 'b', 'c', 'd', 'e', 'f', 0, 0, 0, 0, 0, 0}
^ first null character
// After 3rd memcpy(): strlen() is now 7
{'g', 'a', 'b', 'c', 'd', 'e', 'f', 0, 0, 0, 0, 0, 0}
^ first null character