我正在使用C90编写一个玩四子棋的程序。
我使用ASCII字符为控制台创建了用户界面。
如果我使用C Lion编译程序,我会得到以下输出:
如果我使用gcc main.c编译它,然后运行./a.out,我会得到以下结果:显然,如果我直接使用gcc编译它,这个点字符的大小会有所不同。
有人知道这可能是怎么发生的吗?
负责打印游戏行的代码如下:
void printGameLine(int line[7]) {
int i;
printf("┃");
for (i = 0; i < 7; ++i) {
printColor(line[i]);
line[i] == 0 ? printf(" ") : printf(" ⬤ ");
printColor(0);
printf("┃");
}
printf("\n");
}
代码负责颜色的部分如下所示:(如果这有任何区别的话)
/**
* prints the color
* @param player -1 First player, 0 neutral, 1 Second Player
*/
void printColor(int player) {
switch (player) {
case 1:
printf("\033[0;31m"); /*red*/
break;
case -1:
printf("\033[0;33m");/*yellow*/
break;
default:
printf("\033[0m");/*neutral*/
break;
}
}
printf(" ⬤ ");
中的点在不同的编译器中被解释为不同的字符。 - Jabberwocky" ⬤ "
生成了什么字节序列,你可能会发现答案。 - Jabberwockyprintf
的返回值告诉我们打印出来的字符数。 - Weather Vaneprintf(" ⬤ ");
,然后将其导入到hexdump
中。 - Eugene Sh.