c语言颜色的问题

#include "stdio.h"
#include "windows.h"
#include <stdlib.h>
int main()
{
system("color 1f");
int a,i,j;
char str[]="小明生日快乐";
char str2[]="祝你越长越漂亮等等";
printf(" ");
for(i=0;i<12;i++)
{
if(i==4)
{
Sleep(300);
printf(",");
}

printf("%c",str[i]);
Sleep(300);
if(i==11)
{
Sleep(300);
printf("!");
}
}
printf("\n");
printf("\n\n\n");
printf(" ");
for(j=0;j<18;j++)
{
if(j==14)
{
Sleep(300);
printf(",");
}
Sleep(300);
printf("%c",str2[j]);
if(j==17)
{
Sleep(300);
printf(".....");
}

}
printf("\n");
return 0;
}

增加头文件#include <stdlib.h>,想要用颜色,为什么会出错呢?
:\新建文件夹\MyProjects\aaa\aaaaa.c(7) : error C2143: syntax error : missing ';' before 'type'

D:\新建文件夹\MyProjects\aaa\aaaaa.c(38) : error C2065: 'str2' : undeclared identifier
D:\新建文件夹\MyProjects\aaa\aaaaa.c(38) : error C2109: subscript requires array or pointer type
等等。。。。。。。。。。。。
我的编译器是Visual C++

第1个回答  2014-07-19
SetColor调用的是SetConsoleTextAttribute方法

其中不能使用SetColor(40,30);这样的参数,是错误的.
SetConsoleTextAttribute函数的原型为BOOL SetConsoleTextAttribute(HANDLE
hConsoleOutput, WORD wAttributes);

wAttributes是用来设置颜色的参数:

FOREGROUND_BLUE
字体颜色:蓝

FOREGROUND_GREEN
字体颜色:绿

FOREGROUND_RED
字体颜色:红

FOREGROUND_INTENSITY
前景色高亮显显

BACKGROUND_BLUE
背景颜色:蓝

BACKGROUND_GREEN
背景颜色:绿

BACKGROUND_RED
背景颜色:红
BACKGROUND_INTENSITY
背景色高亮显示

FOREGROUND_BLUE,FOREGROUND_GREEN,FOREGROUND_RED,FOREGROUND_INTENSITY,BACKGROUND_BLUE,BACKGROUND_GREEN,BACKGROUND_RED,BACKGROUND_INTENSITY对应的值分别是1
2 4 8 16 32 64 128。

也就是说SetConsoleTextAttribute函数是靠一个字节的低四来控制前景色,高四位来控制背景色。

具体传入的参数你看下百科:http://baike.baidu.cn/view/4237672.htm追问

我只是想知道,为什么我用这个头文件不行?

第2个回答  2014-07-19
不是头文件不行,而是你的程序是.C程序。
纯C代码,声明必须在其它语句之前,将system那一行,向下挪三行,放在三行声明变量之下即可。本回答被提问者采纳