如何在 C 中使用 printf 为文本添加下划线

How to underline text using printf in C

我注意到问题 Colorful text using printf in C 给出了在 Windows 中的标准控制台输出上设置彩色文本的一个很好的例子。有没有类似的东西可以让输出加下划线?或者甚至可能是粗体或斜体?

编辑:我尝试了 Lundin 关于使用 COMMON_LVB_UNDERSCORE 的回答,但没有成功。尝试使用 AddFontResource() 添加 arial italic 字体以尝试使用 italics 会出现错误,即存在 undefined reference to __imp_AddFontResourceA

使用任何标准 C 函数都不可能这样做,因为 C 语言甚至无法识别屏幕的存在。

用WindowsAPIconsole functions you can change colors, underline and some other things. The particular function you are looking for is called SetConsoleTextAttribute just as in the post you linked. Change its attributes包含COMMON_LVB_UNDERSCORE.

您可能 运行 您的程序在终端接受 ANSI escape codes 的某些环境中。

(我从未使用过Windows - 因为我只使用Linux - 所以我不知道如何在Windows中设置这样的环境; 但我听说这是可能的)

对于 ANSI 转义码,下划线是 "\e[4m"\e 是 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

'\r' 序列与换行符 ('\n') 的不同之处在于它将光标移动到 当前输出行的开头,而不是下一行的开头。使用 '\r' 使程序能够创建包含多个字符的文件 在一行位置。

这会打印带下划线的文本 printf("\f\t\t\tFinal Report\r\t\t\t____________\n");