Стандарт C11 n1570 не знает о "экране консоли" (и, я полагаю, вы говорите о эмуляторе терминала , на котором работает ваша программа).Обратите внимание, что C11 не упоминает «экраны» или «клавиатуры» (только стандартные потоки и очень часто stdout
- это , а не «консоль») имногие компьютеры (например, большинство интернет-серверов или суперкомпьютеров, или даже ваш мобильный телефон ...) не имеют обоих.Кроме того, ваша программа может быть запущена (даже в Windows) с перенаправлениями или в конвейере , и тогда у нее нет консоли (так что ваш вопрос не имеет никакого смысла в такой общей ситуации).case).
Так что в общем случае нет способа сделать то, что вы хотите (так как это не имеет никакого смысла) стандартным способом.
ВозможноВаша операционная система предоставляет некоторый (для конкретной ОС) способ достижения этого.Поэтому изучите API-интерфейс операционной системы, относящийся к вашей системе (например, WinAPI в Windows или системные вызовы Linux, перечисленные в syscalls (2) ).
Возможно, вы захотите использоватьнекоторая библиотека, связанная с терминалом, например ncurses .
Если ваш терминал следует условным обозначениям ANSI , вы можете следовать им.
В противном случае рассмотрите возможностьваша программа имеет GUI .Для этого вам практически понадобится набор инструментов для виджетов (например, Qt , GTK и т. Д.)
Вы также можете рассмотреть некоторые межпроцессное взаимодействие с вашей рабочей средой .Как это сделать (или даже его возможность) очень зависит от операционной системы и рабочего стола и может быть связано с сеансом управлением.
Кстати, помните, что stdout
часто буферизуется (ивозможно с линейной буферизацией).Вам лучше завершить свои printf
управляющие строки с помощью \n
и / или вызова fflush .