The function should add string1 at the end (there is always room for string2 in string2 ):
char *strcat(char *string1, const char *string2) { char * str = string1; // теперь str - указатель на первую ячейку массива while (*(++str)); // двигаю str до конца дин. массива типа char while ((*(str++) = *(string2++))); // изменяю значения после '\0' return string1; } Testil, like everything works correctly, but falls on the test. Help me find a bug.