У вас две ошибки в строке 104,
strncpy(inputCopy, input, strlen(input)*sizeof(char));
Вам нужно дать strncpy место для завершающего нуля, поэтому оно должно быть strlen(input)+1
strncpy не гарантирует, что выходной буфер будет пустым, что похоже на ошибку в strncpy, но это не так. Он был разработан, чтобы работать таким образом. Для чего был разработан strncpy, это скопировать строку в выходной буфер и затем заполнить оставшуюся часть буфера нулями . На самом деле это не «безопасный strcpy»
Ваша другая ошибка заключается в том, что strncpy принимает символ , а не число байтов, поэтому умножение на sizeof(char).
некорректно. Так как sizeof (char) == 1, на самом деле это не вызывает проблем, но это все же неправильное намерение.
Вы были правильно умножены на sizeof(char)
в malloc
в строке 99, поскольку malloc
требуется счетчик байтов.