Как решить ошибку «String is not null terminated»?

Мне нужно конкатенировать две строки с пробелом. Сам код компилируется и запускается, но после ввода двух строк выдает ошибку "String is not null terminated".
Вот код :
char* String::concat(const String& other)
{
	const char space[3]{ " \0" };
	
	
	String result(9999);
	
	

	strcat_s(result.string_, strlen(string_), string_);
	
	cout << result.string_ << endl;

	strcat_s(result.string_, strlen(space), space);
	
	cout << result.string_ << endl;

	strcat_s(result.string_, strlen(other.string_), other.string_);
	
	cout << result.string_ << endl;
	
	return result.string_;
}
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Вы неправильно пользуетесь функцией strcat_s.
Традиционно в Си (видимо, из-за особенностей машины PDP-11) каждая строчка заканчивается нулевым символом.
Смысл strcat_s — если строка находится в буфере ограниченной длины и по какой-то причине не нуль-терминированная, функция не полезет в «левую» память, а ограничится размером буфера. Вторым параметром должна быть длина буфера, а не strlen, который обесценивает весь смысл суффикса «safe».
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы