【发布时间】:2015-12-27 17:05:29
【问题描述】:
我有以下代码:
#include <unistd.h>
#include <stdio.h>
#include <stdbool.h>
#define RESET "\x1b[1J"
#define D "\x1b[0m"
#define Y "\x1b[33;1m"
#define W "\x1b[37;1m"
#define B "\x1b[30;1m"
void printLeft(bool color)
{
if (color) {
printf(Y " __\n"
" / |\n"
" / \\\n"
" / |\n"
W " _\\| " Y "|" W "[" B "*" W "][" B "*" W "]" Y "| " W "|/_\n"
" \\ " Y "| | " W "/\n"
" --" Y "|" W "\\____/" Y "|" W "--\n"
Y " \\ |\n"
" \\ /\n"
" \\ |\n"
W " |" Y "\\__|" W "|\n"
" | |\n"
" ==| |==");
} else {
printf(" __\n"
" / |\n"
" / \\\n"
" / |\n"
" _\\| |[*][*]| |/_\n"
" \\ | | /\n"
" --|\\____/|--\n"
" \\ |\n"
" \\ /\n"
" \\ |\n"
" |\\__||\n"
" | |\n"
" ==| |==");
}
}
void printRight(bool color) {
if (color) {
printf(Y " __\n"
" | \\\n"
" / \\\n"
" | \\\n"
W " _\\| " Y "|" W "[" B "*" W "][" B "*" W "]" Y "| " W "|/_\n"
" \\ " Y "| | " W "/\n"
" --" Y "|" W "\\____/" Y "|" W "--\n"
Y " | /\n"
" \\ /\n"
" | /\n"
W " |" Y "|__/" W "|\n"
" | |\n"
" ==| |==");
} else {
printf(" __\n"
" | \\\n"
" / \\\n"
" | \\\n"
" _\\| |[*][*]| |/_\n"
" \\ | | /\n"
" --|\\____/|--\n"
" | /\n"
" \\ /\n"
" | /\n"
" ||__/|\n"
" | |\n"
" ==| |==");
}
}
void printBottom(bool color) {
if (color) {
printf(Y " __\n"
" | |\n"
" / \\\n"
" | |\n"
" |" W "[" B "*" W "][" B "*" W "]" Y"|\n"
" | |\n"
W " _\\| " Y "|" W "\\____/" Y "| " W "|/_\n"
" \\/" Y "| |" W "\\/\n"
Y " | |\n"
W " /\\" Y "\\ /" W "/\\\n"
" ==/ " Y "|__| " W "\\==");
} else {
printf(" __\n"
" | |\n"
" / \\\n"
" | |\n"
" |[*][*]|\n"
" | |\n"
" _\\| |\\____/| |/_\n"
" \\/| |\\/\n"
" | |\n"
" /\\\\ //\\\n"
" ==/ |__| \\==");
}
}
int main(int argc, char *argv[])
{
short counter = 0;
while (1) {
printf(RESET);
if (counter == 0) printLeft(true);
else if (counter == 2) printRight(true);
else printBottom(true);
if (true) {
printf(Y "\n\n\"IT'S PEANUT BUTTER JELLY TIME\"" D);
} else {
printf("\n\n\"IT'S PEANUT BUTTER JELLY TIME\"");
}
fflush(stdout);
usleep(200000);
counter = (counter + 1) % 4;
}
return 0;
}
除了一件事,一切都很好。第一行似乎添加了额外的空间:
我怎样才能摆脱这个多余的空间?
【问题讨论】:
-
是不是因为这里的逻辑错误:
if (true) {...} else {...}导致总是输出第一个输出文本? -
@WeatherVane 对于每种方法,是的,将输出颜色版本。我稍后会添加一个标志来切换颜色或不颜色。
-
发布的代码缺少 stdio.h 和 unistd.h 和 stdbool.h 的 #include 语句
RESET没有定义。
标签: c ansi-escape