c语言颜色的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++

参考技术A 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追问

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

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

关于C语言程序代码加颜色的问题!

#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
#include "stdio.h" /*I/O函数*/
#include "bios.h" /*ROM基本输入输出函数*/
#include "dos.h" /*dos接口函数*/
#include "alloc.h" /*动态地址分配函数*/
main()

char *f[]= /*定义菜单字符串数组*/
"*************MENU***********", /*菜单的标题行*/
"0. shuru",
"1. xianshi",
"2. xiugai \n",
"3. chazhao",
"4. shanchu",
"5. zairu",
"6. quit",
; /*退出*/
char s[80];
int i;
int key=0; /*记录所压键值*/
int c=0;
clrscr(); /*清屏*/

textcolor(YELLOW); /*设置文本颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为兰色*/
gotoxy(10,2);
putch(0xda); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xc4); /*输出上边框水平线*/
putch(0xbf); /*输出右上角边框 ┓*/
for(i=3;i<22;i++)/*输出左右两边的垂直线*/

gotoxy(10,i);putch(0xb3);
gotoxy(54,i);putch(0xb3);

gotoxy(10,22);putch(0xc0); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xc4); /*输出下边框水平线*/
putch(0xd9); /*输出右下角边框┛*/
window(11,3,53,21);
clrscr(); /*清屏*/

for(i=0;i<8;i++)

gotoxy(10,i+1);
cprintf("%s",f[i]); /*输出菜单项数组*/

i=1;
gotoxy(10,2); /*设置默认选项在第一项*/
textbackground(LIGHTGREEN);/*设置背景颜色为浅绿*/
cprintf("%s",f[1]); /*输出菜单项,表示选中*/
gotoxy(10,2); /*移动光标到菜单的第一项*/
while(key!=13) /*所压键不是回车键时*/

while(bioskey(1)==0); /*查询是否压下了一个键*/
key=bioskey(0); /*返回下一个在键盘压下的键*/
key=key&0xff?key&0xff:key>>8; /*对所压的键进行判断*/
gotoxy(10,i+1);
textbackground(BLUE);/*设置背景颜色为蓝色*/
cprintf("%s",f[i]); /*输出菜单项*/
if(key==72) i=i==1?7:i-1; /*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/
if(key==80)i=i==7?1:i+1; /*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/
gotoxy(10,i+1); /*光标移动i的下一项*/
textbackground(LIGHTGREEN); /*将背景颜色设为浅绿*/
cprintf("%s",f[i]); /*输出菜单项*/
c=i-1; /*给代表菜单选项的整数赋值*/

textbackground(BLACK); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
clrscr();
return c; /*返回代表菜单选项的整数值*/

这是一行菜单的代码!谁能帮我把它的黑色背景改成别的颜色!那个蓝框和黄色的字不改!就把后面的黑色背景改了!!哪为大哥会弄帮弄一下!小弟感激不尽!小弟用WIN-TC当场试验!成功就给分!!谢谢了!!

参考技术A 我这儿没有环境,你试一下吧:
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
#include "stdio.h" /*I/O函数*/
#include "bios.h" /*ROM基本输入输出函数*/
#include "dos.h" /*dos接口函数*/
#include "alloc.h" /*动态地址分配函数*/
main()

char *f[]= /*定义菜单字符串数组*/
"*************MENU***********", /*菜单的标题行*/
"0. shuru",
"1. xianshi",
"2. xiugai \n",
"3. chazhao",
"4. shanchu",
"5. zairu",
"6. quit",
; /*退出*/
char s[80];
int i;
int key=0; /*记录所压键值*/
int c=0;
clrscr(); /*清屏*/

textcolor(YELLOW); /*设置文本颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为兰色*/
gotoxy(10,2);
putch(0xda); /*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xc4); /*输出上边框水平线*/
putch(0xbf); /*输出右上角边框 ┓*/
for(i=3;i<22;i++)/*输出左右两边的垂直线*/

gotoxy(10,i);putch(0xb3);
gotoxy(54,i);putch(0xb3);

gotoxy(10,22);putch(0xc0); /*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xc4); /*输出下边框水平线*/
putch(0xd9); /*输出右下角边框┛*/
window(11,3,53,21);
clrscr(); /*清屏*/
textbackground(LIGHTGREEN);
for(i=0;i<8;i++)

gotoxy(10,i+1);
cprintf("%s",f[i]); /*输出菜单项数组*/

i=1;
gotoxy(10,2); /*设置默认选项在第一项*/
textbackground(LIGHTGREEN);/*设置背景颜色为浅绿*/
cprintf("%s",f[1]); /*输出菜单项,表示选中*/
gotoxy(10,2); /*移动光标到菜单的第一项*/
while(key!=13) /*所压键不是回车键时*/

while(bioskey(1)==0); /*查询是否压下了一个键*/
key=bioskey(0); /*返回下一个在键盘压下的键*/
key=key&0xff?key&0xff:key>>8; /*对所压的键进行判断*/
gotoxy(10,i+1);
textbackground(BLUE);/*设置背景颜色为蓝色*/
cprintf("%s",f[i]); /*输出菜单项*/
if(key==72) i=i==1?7:i-1; /*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/
if(key==80)i=i==7?1:i+1; /*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/
gotoxy(10,i+1); /*光标移动i的下一项*/
textbackground(LIGHTGREEN); /*将背景颜色设为浅绿*/
cprintf("%s",f[i]); /*输出菜单项*/
c=i-1; /*给代表菜单选项的整数赋值*/

textbackground(LIGHTGREEN); /*设置背景颜色为黑色*/
window(1,1,80,25); /*恢复原窗口大小*/
clrscr();
return c; /*返回代表菜单选项的整数值*/
本回答被提问者采纳

以上是关于c语言颜色的问题的主要内容,如果未能解决你的问题,请参考以下文章

c语言字怎样颜色变化

c语言代码敲的爱心没有颜色

C语言输出字体的颜色怎么改变

c语言中的颜色设置语句详解

c语言编写程序符号为啥没变颜色?

c语言中windows 调用api实现字体颜色,字体,以及动画