在C言语编程中,实现文本的高亮排版是一个罕见的须要,尤其是在文本编辑器或许命令行界面顺序中。以下是一些利用C言语实现文本划横线高亮排版的技能跟方法。
ANSI本义序列是一种广泛利用的字符序列,可能用来在支撑ANSI本义序列的终端中改变文本的表现属性。以下是一个利用ANSI本义序列为文本增加下划线的例子:
#include <stdio.h>
int main() {
printf("\033[4m文本高亮\033[0m\n"); // \033[4m 开启下划线,\033[0m 重置全部属性
return 0;
}
鄙人面的代码中,\033[4m
用于开启下划线,\033[0m
用于重置文本的全部属性(包含下划线)。
假如你的顺序须要运转在支撑POSIX标准的体系上,可能利用termios
跟ioctl
等库函数来把持终端的属性。以下是一个利用termios
库函数设置终端属性并增加下划线的例子:
”`c
#include
void enable_underline() {
struct termios ttystate;
tcgetattr(STDOUT_FILENO, &ttystate);
ttystate.c_lflag |= ECHO | ISIG;
ttystate.c_lflag &= ~(ICANON);
ttystate.c_cc[VMIN] = 1;
ttystate.c_cc[VTIME] = 0;
ttystate.c_ostate &= ~OPOST;
ttystate.c_cc[ONLRET] = 0;
ttystate.c_cc[OLCUC] = 0;
ttystate.c_iflag &= ~(IXON | IXOFF | IXANY);
ttystate.c_iflag &= ~(INLCR | IGNCR);
ttystate.c_oflag &= ~(OPOST | ONLCR | OCRNL);
ttystate.c_oflag &= ~(ONOCR | ONLRET);
ttystate.c_oflag |= OLCUC;
ttystate.c_oflag |= ONOCR;
ttystate.c_oflag |= ONLRET;
ttystate.c_oflag |= OPOST;
ttystate.c_iflag |= (INLCR | IGNCR);
ttystate.c_oflag |= (ONLCR | OCRNL);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_iflag |= (IXON | IXOFF | IXANY);
ttystate.c_iflag |= (INLCR | IGNCR);
ttystate.c_oflag |= (ONLCR | OCRNL);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_iflag |= (IXON | IXOFF | IXANY);
ttystate.c_iflag |= (INLCR | IGNCR);
ttystate.c_oflag |= (ONLCR | OCRNL);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c_oflag |= (ONOCR | ONLRET);
ttystate.c_oflag |= (OLCUC | OPOST);
ttystate.c