Как подчеркнуть текст с помощью printf в C

Я отмечаю вопрос красочный текст с помощью printf в C дает хороший пример установки цветного текста на стандартный вывод консоли в Windows. Есть что-то подобное, что позволяет подчеркнуть? Или, возможно, даже жирным шрифтом или курсивом?

EDIT: я попробовал ответ Лундина на использование COMMON_LVB_UNDERSCORE без успеха. Попытка использовать AddFontResource () для добавления шрифта arial italic, чтобы попробовать курсив, дает ошибку, что есть undefined reference to __imp_AddFontResourceA

3 ответов


это невозможно сделать с помощью каких-либо стандартных функций C, так как язык C даже не распознает наличие экрана.

С Windows API функции консоли вы можете менять цвета, подчеркивать и некоторые другие вещи. Конкретная функция, которую вы ищете, называется SetConsoleTextAttribute так же, как в сообщении, которое вы связали. Изменить его атрибуты включить COMMON_LVB_UNDERSCORE.


вы можете запустить свою программу в некоторой среде с терминалом, принимающим ANSI escape-коды.

(Я никогда не использовал Windows-так как я использую только Linux -, поэтому я не знаю, как настроить такую среду в Windows; но я слышал, что это возможно)

С ANSI escape-кодами подчеркивание "\e[4m" с \e быть ESCAPE-символом ASCII.


возможно, попробуйте использовать termcaps. Что-то вроде этого (после инициализации termcaps) :

printf(tgetstr("us", NULL)); /* underline on */
printf(""/* your string */);
printf(tgetstr("ue", NULL)); /* underline off */

или короче :

printf("%s/* your text here */%s", tgetstr("us", NULL), tgetstr("ue", NULL));

https://www.gnu.org/software/termutils/manual/termcap-1.3/html_node/termcap_34.html