Есть две проблемы.Во-первых, это здесь не работает:
malloc(1 + sizeof(px) + sizeof(py));
sizeof(px)
не оценивает размер строки, он просто оценивает размер char*
, что нечто ты намеревалсяВместо этого попробуйте что-то вроде этого:
pz = (char *)malloc(strlen(strOne) + strlen(strTwo) + 1);
Вторая проблема заключается в том, что вместо объединения двух строк вы копируете их друг на друга.Второй вызов должен быть
strcat(pz, py);
Вместо того, чтобы снова strcpy
.
В примечании, когда вы печатаете строку, вместо того, чтобы просто проходить по массиву, вы также можетепросто используйте спецификатор формата %s
:
printf("%s", pz);
И последнее, но не менее важное: не забудьте освободить память, когда закончите:
free(pz);