Этот код все делает правильно: очищает экран, и вывод с первой строки, первой позиции ячейки:
write(1, "\x1b[999B\x1b[999C", 12);
//Тут будет код вычисляющий размер терминала(знаю про ioctl)
write(1, "\x1b[H", 3);
write(1, "\x1b[J", 3);
output();//посимвольно выводит в stdout из массива
Но если заменить первую строку на эту:
cout << "\x1b[999B\x1b[999C";
То вывод будет начинаться где-то с середины терминала(по-крайней мере в моем).
Сразу подумал, что cout добавляет в конец \0, но строка
write(1, "\x1b[999B\x1b[999C\0", 13);
ничего не меняет, все работает так же четко.
P.s. забыл упомянуть важную деталь, что терминал настроен в сыром режиме
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости