Выдаёт лишние символы char
Подскажите пожалуйста почему при такой конструкции:
char *clear_scr = new char[w * h]();
for (int i = 0; i < w * h; i++) {
clear_scr[i] = symbol;
}
std::cout << clear_scr;
delete[] clear_scr;
выводятся нужные символы, а затем ¤¤¤¤?
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Потому что в цикле вы заменяете последний символ конца строки на свой. Например:
char *hello = "He";
hello[0] == 'H';
hello[1] == 'e';
hello[2] == '\0';
А вы этот "hello[2]" затираете своим символом. И cout "бежит" дальше пока не найдет '\0'.
Рабочий вариант:
char *clear_scr = new char[w * h]();
for (int i = 0; i < w * h - 1; i++) {
clear_scr[i] = symbol;
}
std::cout << clear_scr;
delete[] clear_scr;