只是为了好玩,但是,任务是让cmd窗口在没有用户输入的情况下自动更改其颜色。这样的事情可以通过使用系统(“颜色”)来完成。我试过循环它
for(;;) {
system("color 1c");
system("color 3f");
}
(并在该循环中添加更多具有不同属性的“color”命令),但显然在循环中颜色不会改变。
第二个问题,如何将属性转换为变量,不断增加,以便我们不需要复制粘贴十几个具有不同属性的颜色命令?
至于第二部分我唯一的想法是system("color %d")
,但不用说甚至不会编译。
答案 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,但我想我们可以忽略某些颜色的光版本,因为无论如何都会产生预期的效果。