Как слепить пять слов в одно через пробелы?

Есть такая задача :
Пользователь вводит пять слов. Нужно сделать из всех пяти слов один char массив c++.

В процессе решения задачи я написал такой код :
#include <iostream>
using namespace std;
int main() {
	const int size = 20;
	char res[100];
	char sentense1[size];
	char sentense2[size];
	char sentense3[size];
	char sentense4[size];
	char sentense5[size];
	char space[1]{ ' ' };
	cout << "Enter five words : " << endl;
	cin >> sentense1;
	cin >> sentense2;
	cin >> sentense3;
	cin >> sentense4;
	cin >> sentense5;
	cout << endl << sentense1 << " " << sentense2;
	strcat_s(sentense1, space);
	strcat_s(sentense2, space);
	strcat_s(sentense3, space);
	strcat_s(sentense4, space);
	strcat_s(res, 100+strlen(sentense1), sentense1);
	strcat_s(res, 100+strlen(sentense2), sentense2);
	strcat_s(res, 100+strlen(sentense3), sentense3);
	strcat_s(res, 100+strlen(sentense4), sentense4);
	strcat_s(res, 100+strlen(sentense5), sentense5);
	cout << endl << res;
}


но мой код выводит только два первых слова а дальше выводит ошибку о переполнении буфера или о отсутствии \0 в конце строки.

Помогите пожалуйста.
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
Gremlin92
@Gremlin92
Целеустремленный
100+strlen(sentense1)
Неправильно, надо так
0+strlen(sentense1)
20+strlen(sentense2)
40+strlen(sentense3)
60+strlen(sentense4)
80+strlen(sentense5)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы