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

时间:2015-04-01 08:52:55

标签: c windows winapi console

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

编辑:我尝试过Lundin使用COMMON_LVB_UNDERSCORE的答案但没有运气。尝试使用AddFontResource()添加arial斜体字体以尝试斜体会产生错误,即undefined reference to __imp_AddFontResourceA

4 个答案:

答案 0 :(得分:2)

使用任何标准C函数都无法实现,因为C语言甚至无法识别屏幕的存在。

使用Windows API console functions,您可以更改颜色,下划线和其他一些内容。您要查找的特定功能称为SetConsoleTextAttribute,就像您链接的帖子一样。将其attributes更改为包含COMMON_LVB_UNDERSCORE

答案 1 :(得分:2)

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

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

使用ANSI转义码时,下划线为"\e[4m"\e为ASCII ESCAPE字符。

答案 2 :(得分:1)

也许尝试使用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

答案 3 :(得分:0)

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

这将打印带下划线的文本 printf(“ \ f \ t \ t \ t最终报告\ r \ t \ t \ t ______________ \ n”);