如何在C语言中使用printf函数给文本添加下划线

6
我注意到问题 在Windows中使用printf设置彩色文本 给出了一个很好的示例。是否有类似的东西可以使输出被下划线标记?或者甚至加粗或斜体?
编辑:我尝试了Lundin的答案,使用COMMON_LVB_UNDERSCORE没有成功。尝试使用AddFontResource()添加arial italic字体以尝试斜体会出现错误,提示有一个undefined reference to __imp_AddFontResourceA
4个回答

3
无法使用任何标准的C函数来实现此操作,因为C语言甚至不认识屏幕的存在。
通过Windows API 控制台函数,您可以更改颜色、下划线和其他一些内容。您要查找的特定函数称为SetConsoleTextAttribute,就像您链接的帖子中所述。将其属性更改为包括COMMON_LVB_UNDERSCORE

我的win7系统上没有运气,打开该选项后,所有printf()字符串字符都被打印为空格,除了换行符 :( - Toby
1
@Toby 嗯,看起来是这样。我已经很久没有使用这些函数了。我会进行一些研究,看看能否找出原因。 - Lundin
1
COMMON_LVB_* 属性仅在控制台使用 DBCS 代码页时,对 CHAR_INFO 属性进行使用。 - Eryk Sun

2

在某些接受ANSI转义码的终端环境中,您可以运行程序。

(由于我只使用Linux,从未使用过Windows,因此不知道如何在Windows上设置此类环境;但我听说这是可能的。)

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


1

-2

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

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


不行。这会覆盖文本,并且只会显示下划线。 - S_Rollan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接