Если вы ограничены использованием только printf()
, это требует знания терминала, в который вы пишете. Скорее всего, это терминал в стиле ANSI, так что это может быть сделано. Библиотека Unix curses
(Linux ncurses
) обрабатывает такую информацию независимо от терминала. По сути, вам нужно определить или изготовить управляющие строки, чтобы перевести терминал в режим red
, а затем снова сбросить его (но как узнать, в каком состоянии он находился до того, как перешел на красный текст?). Упомянутые библиотеки отслеживают информацию о состоянии, среди многих других деталей.
Однако, если вы организуете строки, то такой код поможет (более или менее):
static const char to_red[] = "\033...";
static const char to_black[] = "\033...";
printf("%s%s%s\n", to_red, "hello world", to_black);
Сложная часть - это определение того, что входит в константы строк (которые на самом деле не должны быть постоянными).
Все это означает, что, вероятно, существует специфичный для Windows интерфейс, который можно использовать для выполнения работы, но на самом деле это не включает printf()
для управления цветами; Вы вызываете Windows API для установки цвета, затем пишете с помощью printf()
, а затем снова вызываете API для восстановления цвета. Вероятно, существует функция запроса, позволяющая вам найти текущий параметр, который вы используете перед его изменением.