如何在c程序中加粗文本
How to bold text in c program
如何加粗我的 PrintF? ..(我是 C 的新手)
#include <stdio.h>
int main() {
int i;
for (i=1; i<=5; i++) {
printf("Md.Mehedi hasan");
}
return 0;
}
如果您的终端支持 ANSI 转义序列,您可以这样做:
#include <stdio.h>
int main(void)
{
for(int i = 1; i <= 5; i++)
printf("\e[1mMd.Mehedi hasan\e[m");
return 0;
}
\e
为ESC字符(ASCII 27或0x1B),ESC [ 1 m
设置粗体,ESC [ m
重置显示属性,即重置粗体。
在 Linux Ubuntu 18.04 的终端中测试。
为了提高可读性,使用一些字符串文字宏来表示颜色和格式代码,如下所示:
#include <stdio.h>
#define COLOR_BOLD "\e[1m"
#define COLOR_OFF "\e[m"
int main(void)
{
for (int i = 1; i <= 5; i++)
{
printf(COLOR_BOLD "Md.Mehedi hasan\n" COLOR_OFF);
}
return 0;
}
构建并运行命令:
mkdir -p bin && \
gcc -Wall -Wextra -Werror -O3 -std=c17 printf_bold_and_colors.c -o bin/a && \
bin/a
这里有一些来自我的 bash 代码的更多示例:https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh#L126-L138:
# ANSI Color Code Examples to help make sense of the regex expressions below
# Git config color code descriptions; see here:
#
# --------------- ----------------------------------------------------------------
# Git config color code desription
# ANSI Color Code Order: text_color(x1) background_color(x1) attributes(0 or more)
# ---------------- ----------------------------------------------------------------
# 3[m # code to turn off or "end" the previous color code
# 3[1m # "white"
# 3[31m # "red"
# 3[32m # "green"
# 3[33m # "yellow"
# 3[34m # "blue"
# 3[36m # "cyan"
# 3[1;33m # "yellow bold"
# 3[1;36m # "cyan bold"
# 3[3;30;42m # "black green italic" = black text with green background, italic text
# 3[9;30;41m # "black red strike" = black text with red background, strikethrough line through the text
您可以将 3
(八进制 33
)替换为 \e
,因为它们的含义相同,只是表示形式不同。参见:https://en.wikipedia.org/wiki/ASCII#Control_code_chart.
有关更多颜色和格式数字代码,请参阅此处 table:https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
您可以使用多个格式编号,用分号 (;
) 分隔它们,如下例所示。
C 中的几个非常酷的示例:
// 1 = bold; 5 = slow blink; 31 = foreground color red
// 34 = foreground color blue
// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
#define COLOR_BOLD_SLOW_BLINKING "\e[1;5m"
#define COLOR_BOLD_SLOW_BLINKING_RED "\e[1;5;31m"
#define COLOR_BOLD_BLUE "\e[1;34m"
// Make "hello" bold and slow blinking and red, and "world" just bold and blue
printf(COLOR_BOLD_SLOW_BLINKING_RED "hello " COLOR_OFF
COLOR_BOLD_BLUE "world\n" COLOR_OFF);
更进一步
- 运行 在我的 eRCaGuy_hello_world repo here: printf_bold_and_colors.c
中使用闪烁文本和交替 even/odd 颜色模式的更多 ANSI 颜色代码文本着色和格式示例
参考资料
- Gif工具(我是如何制作上面的gif动图的):
- 用OBS studio录屏;按照本教程进行部分屏幕截图:https://www.youtube.com/watch?v=ypMDvZ_Jgl4
- .mkv 视频转换为.gif
ffmpeg -i in.mp4 out.gif
, per my comment here.
如何加粗我的 PrintF? ..(我是 C 的新手)
#include <stdio.h>
int main() {
int i;
for (i=1; i<=5; i++) {
printf("Md.Mehedi hasan");
}
return 0;
}
如果您的终端支持 ANSI 转义序列,您可以这样做:
#include <stdio.h>
int main(void)
{
for(int i = 1; i <= 5; i++)
printf("\e[1mMd.Mehedi hasan\e[m");
return 0;
}
\e
为ESC字符(ASCII 27或0x1B),ESC [ 1 m
设置粗体,ESC [ m
重置显示属性,即重置粗体。
在 Linux Ubuntu 18.04 的终端中测试。
为了提高可读性,使用一些字符串文字宏来表示颜色和格式代码,如下所示:
#include <stdio.h>
#define COLOR_BOLD "\e[1m"
#define COLOR_OFF "\e[m"
int main(void)
{
for (int i = 1; i <= 5; i++)
{
printf(COLOR_BOLD "Md.Mehedi hasan\n" COLOR_OFF);
}
return 0;
}
构建并运行命令:
mkdir -p bin && \
gcc -Wall -Wextra -Werror -O3 -std=c17 printf_bold_and_colors.c -o bin/a && \
bin/a
这里有一些来自我的 bash 代码的更多示例:https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/git-diffn.sh#L126-L138:
# ANSI Color Code Examples to help make sense of the regex expressions below
# Git config color code descriptions; see here:
#
# --------------- ----------------------------------------------------------------
# Git config color code desription
# ANSI Color Code Order: text_color(x1) background_color(x1) attributes(0 or more)
# ---------------- ----------------------------------------------------------------
# 3[m # code to turn off or "end" the previous color code
# 3[1m # "white"
# 3[31m # "red"
# 3[32m # "green"
# 3[33m # "yellow"
# 3[34m # "blue"
# 3[36m # "cyan"
# 3[1;33m # "yellow bold"
# 3[1;36m # "cyan bold"
# 3[3;30;42m # "black green italic" = black text with green background, italic text
# 3[9;30;41m # "black red strike" = black text with red background, strikethrough line through the text
您可以将 3
(八进制 33
)替换为 \e
,因为它们的含义相同,只是表示形式不同。参见:https://en.wikipedia.org/wiki/ASCII#Control_code_chart.
有关更多颜色和格式数字代码,请参阅此处 table:https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
您可以使用多个格式编号,用分号 (;
) 分隔它们,如下例所示。
C 中的几个非常酷的示例:
// 1 = bold; 5 = slow blink; 31 = foreground color red
// 34 = foreground color blue
// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters
#define COLOR_BOLD_SLOW_BLINKING "\e[1;5m"
#define COLOR_BOLD_SLOW_BLINKING_RED "\e[1;5;31m"
#define COLOR_BOLD_BLUE "\e[1;34m"
// Make "hello" bold and slow blinking and red, and "world" just bold and blue
printf(COLOR_BOLD_SLOW_BLINKING_RED "hello " COLOR_OFF
COLOR_BOLD_BLUE "world\n" COLOR_OFF);
更进一步
- 运行 在我的 eRCaGuy_hello_world repo here: printf_bold_and_colors.c 中使用闪烁文本和交替 even/odd 颜色模式的更多 ANSI 颜色代码文本着色和格式示例
参考资料
- Gif工具(我是如何制作上面的gif动图的):
- 用OBS studio录屏;按照本教程进行部分屏幕截图:https://www.youtube.com/watch?v=ypMDvZ_Jgl4
- .mkv 视频转换为.gif
ffmpeg -i in.mp4 out.gif
, per my comment here.