如何循环<windows.h>系统(“color”)命令以使命令提示符快速改变其颜色?

时间:2018-04-01 21:02:29

标签: c windows cmd colors attributes

只是为了好玩,但是,任务是让cmd窗口在没有用户输入的情况下自动更改其颜色。这样的事情可以通过使用系统(“颜色”)来完成。我试过循环它

for(;;) { system("color 1c"); system("color 3f"); }

(并在该循环中添加更多具有不同属性的“color”命令),但显然在循环中颜色不会改变。 第二个问题,如何将属性转换为变量,不断增加,以便我们不需要复制粘贴十几个具有不同属性的颜色命令? 至于第二部分我唯一的想法是system("color %d"),但不用说甚至不会编译。

1 个答案:

答案 0 :(得分:1)

system()收到字符串,而不是格式。您可以使用snprintf()将所需的字符串写入缓冲区,然后将其交给系统。

编辑:尝试过,按预期工作:

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

int main()
{
    srand(374); //doesnt need to be a proper seed, since just for fun
    char *buf = malloc(64); //should be enough
    loop:
    snprintf(buf, 64, "color %d%d", rand()%10, rand()%10);
    system(buf);
    goto loop;
    return 0;
}

是的,我知道没有free(),但无论如何它都是无限循环。 :^) 此解决方案也忽略了一些颜色,因为它只写0-9而不是A-F,但我想我们可以忽略某些颜色的光版本,因为无论如何都会产生预期的效果。