如何使用C在控制台应用程序中更改字体大小

如何使用C在控制台应用程序中更改字体大小,c,C,如何使用c更改打印字体的字体大小 printf ("%c", map[x][y]); 我想打印一个比程序中所有其他文本都大的数组。有没有一种方法可以使该语句打印得更大?如果是Linux(可能还有其他形式的Unix),您可以随意使用系统来更改一些终端设置,使其更突出—尽管不是字体大小。这种东西实际上只适用于简单的程序,而且显然是不可移植的: #include <stdio.h> #include <stdlib.h> [...] printf("Normal tex

如何使用c更改打印字体的字体大小

 printf ("%c", map[x][y]);
我想打印一个比程序中所有其他文本都大的数组。有没有一种方法可以使该语句打印得更大?

如果是Linux(可能还有其他形式的Unix),您可以随意使用
系统
来更改一些终端设置,使其更突出—尽管不是字体大小。这种东西实际上只适用于简单的程序,而且显然是不可移植的:

#include <stdio.h>
#include <stdlib.h>

[...]

printf("Normal text\n");
system("setterm -bold on");
printf("Bold text\n");
system("setterm -bold off");
#包括
#包括
[...]
printf(“普通文本”);
系统(“setterm-粗体显示”);
printf(“粗体文本”);
系统(“setterm-粗体关闭”);

否则,您可以通过
printf
直接发送各种终端序列,这些序列将控制大多数Unix终端应用程序,例如
\033[31m
将xterm中的文本更改为红色。但这些序列可能会有所不同。

如果您在某些Unix下,您可以尝试激活和停用粗体文本:

printf("\033[1m%c\033[0m", map[x][y]);
虽然使用
system()
可以工作,但仅仅为了这样做而调用外部程序是相当繁重的。至于,它是针对特定类型的终端(可能是VT100兼容的终端类型)硬编码的,不支持用户的实际终端类型

在C中,您应该直接使用terminfo功能:

#include <term.h>

/* One-time initialization near the beginning of your program */
setupterm(NULL, STDOUT_FILENO, NULL);

/* Enter bold mode */
putp(enter_bold_mode);

printf("I am bold\n");

/* Turn it off! */
putp(exit_attribute_mode);
#包括
/*在程序开始时进行一次初始化*/
setupterm(空,标准输出文件号,空);
/*进入粗体模式*/
putp(输入粗体模式);
printf(“我是粗体的”);
/*关掉它*/
putp(退出属性模式);

尽管如此,如前所述,不支持更改字体大小。字体大小由用户控制。

此代码将在Win32应用程序上运行(无论使用的子系统是WINDOWS还是控制台):

然后打电话(例如):


这似乎不太可能。您所在系统的控制台子系统将指定字体。您只是将未格式化的字符串写入标准输出流,系统会按照它的要求进行处理。您可以使用ASCII art。但是,正如SirPentor已经告诉您的那样,字体是由控制台子系统设置的。不幸的是,请注意这一点,硬编码为特定的终端类型。是的,我知道;)我通常通过xtermI使用它。我同意,仅仅调用它很难,但它非常可移植(在具有该命令的操作系统中)在简单的程序中也很容易。实际上,
setterm
是不可移植的,它是Linux特有的。
tput
是您正在寻找的可移植命令。
tput
将只使用ternfo,正如我所演示的,所以您可以直接使用它。termcap/ternfo和
$TERM
环境变量已经存在了12个月ADE和ADE在几乎所有操作系统上都可用。哦,好吧,我没意识到它只在Linux中出现。不过我的意思是只适用于简单的程序,在这些程序中,用于操作终端的外部库和函数很快变得难以记住。我决不会建议将其用于“正确的”代码。
inline void setFontSize(int a, int b) 

{

    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

    PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx = new CONSOLE_FONT_INFOEX();

    lpConsoleCurrentFontEx->cbSize = sizeof(CONSOLE_FONT_INFOEX);

    GetCurrentConsoleFontEx(hStdOut, 0, lpConsoleCurrentFontEx);

    lpConsoleCurrentFontEx->dwFontSize.X = a;

    lpConsoleCurrentFontEx->dwFontSize.Y = b;

    SetCurrentConsoleFontEx(hStdOut, 0, lpConsoleCurrentFontEx);

}
setFontSize(20,20);