Изменить цвет выводимого текста - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Как изменить цвет текста? Использую Code::Blocks и Windows 7 x64. Такой способ не работает:
#include<conio.h>
main()
{
textcolor(RED);
cprintf("Hello!");
return 0;
}
А тут что-то много действий:
#include <windows.h>         //header file for windows
#include <stdio.h>                          //C standard library
void SetColor(int ForgC);
int main()
{
    SetColor(34);
    printf("test clour");
    return 0;
}
void SetColor(int ForgC)
{
     WORD wColor;
                          //We will need this handle to get the current background attribute
     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
     CONSOLE_SCREEN_BUFFER_INFO csbi;
 
                           //We use csbi for the wAttributes word.
     if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
     {
                     //Mask out all but the background attribute, and add in the forgournd color
          wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
          SetConsoleTextAttribute(hStdOut, wColor);
     }
     return;
}
Есть ли другой способ изменить цвет выводимого текста?

Решение задачи: «Изменить цвет выводимого текста»

textual
Листинг программы
[#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
 
void SetColor(int ForgC);
 
int main()
{
    int s;
    float x;
 
    printf("\n \t 1)cos(x*x) \n \t 2)4*x*x+7 \n \t 3)sqrt(x*x+x+4)\n");
    SetColor(35);
    printf("Choose somethin to count the x: ");
    scanf("%i", &s);
 
    switch((s>=1 && s<=3)?s:0)
    {
    case 1 :
            printf("X is: ");
            scanf("%f", &x);
            x = cos(x*x);
            printf("The result of x is %.02f", x);
            getchar();
        break;
 
    case 2 :
            printf("X is: ");
            scanf("%f", &x);
            x = (4*x*x+7);
            printf("The result of x is %.02f", x);
            getchar();
        break;
    }
    return 0;
 
 
void SetColor(int ForgC)
{
     WORD wColor;
                          //We will need this handle to get the current background attribute
     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
     CONSOLE_SCREEN_BUFFER_INFO csbi;
 
                           //We use csbi for the wAttributes word.
     if(GetConsoleScreenBufferInfo(hStdOut, &csbi))
     {
                     //Mask out all but the background attribute, and add in the forgournd color
          wColor = (csbi.wAttributes & 0xF0) + (ForgC & 0x0F);
          SetConsoleTextAttribute(hStdOut, wColor);
     }
     return;
    }
}

Объяснение кода листинга программы

[1] Включаются необходимые заголовочные файлы [2] Определяется функция SetColor, которая меняет цвет вывода текста [3] В функции main происходит вывод списка вариантов для выбора [4] Вызывается функция SetColor с аргументом 35, который соответствует цвету фона 35 (предположительно синий) [5] Происходит запрос на ввод числа от пользователя с помощью функции scanf [6] Выполняется операция switch в зависимости от выбранного пользователем числа [7] При выборе варианта 1 происходит вывод приглашения для ввода числа и результата вычисления функции cos(xx) [8] При выборе варианта 2 происходит вывод приглашения для ввода числа и результата вычисления функции 4x*x+7 [9] В функции SetColor происходит получение текущего цвета фона с помощью функции GetStdHandle и GetConsoleScreenBufferInfo [10] Происходит установка цвета текста с помощью функции SetConsoleTextAttribute [11] Возвращается управление в основную программу [12] Завершается функция main [13] Завершается программа

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы