c - 一些函数在较新的编译器中不起作用

标签 c visual-studio sleep turbo-c++

我使用的是 TurboC++,现在我已更改为 Visual Studio Express 2012 for Windows Desktop,我什至尝试过 Dev C++。 我在两个较新的编译器中都会遇到错误,但在 Turbo C++ 中不会出现错误

struct date d;
sleep(3);

我想知道这些功能的替代方案

为了进一步更改背景和前景色,我被告知要使用

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED);

这些工作得很好,但事实是它只有有限数量的颜色(我想每种颜色 3 种) 就像,我无法将文本颜色更改为白色!怎么做??

最佳答案

您可以定义新颜色并将其用作现有颜色

#define FOREGROUND_WHITE (FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN)  

下面的代码将打印前景色和背景色的不同组合
根据结果​​,根据需要传递值。

for(i=0; i<255; i++)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);
printf("NEW COLOUR=%d\n",i);
}  

编辑

#include<stdio.h>
#include<windows.h>
/*
//0-black
//1-blue
//2-green
//  ......
//15-white



//0-15-black back ground, text colour as above 0-black,15-white
//16-31blue back ground,  text colour as above 16+0 -black 16+15-white
//32-47green back ground, text colour as above 32+0 -black 32+15-white
// ......
//240-white back ground,  text colour as above 240+0 -black 240+15-white
*/


int main()
{
int i;

    for(i=0; i<256; i++) //loop to print text colours 0-15 total 16 colours
    {
        // Sleep( 3000 );   // sleep three seconds
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);
        printf("Text colour=%d\n",i);
    }
    system("pause");


    for(i=0; i<256; i=i+8) //background colours 0-15 total 16 back grounds
    {
        //    Sleep( 3000 );   // sleep three seconds
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i);
        printf("Back ground=%d\n",i);
    }
    system("pause");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0+15);  //white text +black background

    system("pause");

}

关于c - 一些函数在较新的编译器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19117160/

相关文章:

c - tcp消息通信

mysql - 如何在 ADO.NET 4 中检索主键元数据?

c# - 禁用特定控件的设计模式

java - 如何暂停 Runnable() 对象以进行测试

c - 为什么这些构造使用前后递增的未定义行为?

c++ - 按位或顺序的评估顺序

c - 为什么在我仍然能够访问这些位置时出现段错误?

c++ - 我们如何使用 Visual Studio 2013 在 C++ 中访问变更集编号?

php - 为什么 php sleep() 会暂停所有脚本的执行?

python - 为什么 time.sleep() 延迟在嵌套 while 循环内无法按预期工作?