Как изменить цвет текста в C с примером кода

Как задать цвет текста в c пример

Как задать цвет текста в c пример

Функция SetConsoleTextAttribute принимает два параметра: дескриптор консоли и значение цвета, где цвет кодируется числом от 0 до 15 для стандартных оттенков. В Linux текст окрашивается через строки вида \033[31m для красного или \033[0m для сброса цвета. Такой подход не требует сторонних библиотек и полностью совместим с консольными приложениями.

Использование функции SetConsoleTextAttribute для Windows

Для изменения цвета текста в консоли Windows в языке C применяется функция SetConsoleTextAttribute, входящая в API Windows. Она принимает два параметра: дескриптор консоли и код цвета, который задает оттенок текста и фона. Дескриптор консоли получают через GetStdHandle(STD_OUTPUT_HANDLE).

Код цвета представляет собой 8-битное значение: младшие 4 бита отвечают за цвет текста, старшие 4 – за цвет фона. Каждому цвету соответствует числовое значение:

Цвет Код
Черный 0
Синий 1
Зеленый 2
Голубой 3
Красный 4
Пурпурный 5
Желтый 6
Белый 7
Ярко-серый 8
Ярко-синий 9
Ярко-зеленый 10
Ярко-голубой 11
Ярко-красный 12
Ярко-пурпурный 13
Ярко-желтый 14
Ярко-белый 15

Пример использования:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(hConsole, 4); // красный текст

printf(«Пример текста красного цвета\\n»);

SetConsoleTextAttribute(hConsole, 7); // возврат белого цвета

Применение escape-последовательностей ANSI в консоли Linux

Применение escape-последовательностей ANSI в консоли Linux

Стандартные коды цвета текста:

30 – черный, 31 – красный, 32 – зеленый, 33 – желтый, 34 – синий, 35 – пурпурный, 36 – голубой, 37 – белый

Коды фона задаются прибавлением 10: 40 – черный фон, 41 – красный фон, …, 47 – белый фон. Для сброса цвета используют код 0: \033[0m.

Пример применения в C:

printf(«\033[31mКрасный текст\033[0m\\n»);

printf(«\033[42mЗеленый фон\033[0m\\n»);

printf(«\033[33;44mЖелтый текст на синем фоне\033[0m\\n»);

Рекомендуется объединять коды через точку с запятой, чтобы одновременно задавать текст, фон и дополнительные атрибуты (жирный, подчеркивание). Это обеспечивает однородность оформления и позволяет легко менять цветовую схему без сторонних библиотек.

Смена цвета текста и фона одновременно

Смена цвета текста и фона одновременно

В языке C одновременно изменить цвет текста и фона можно через функции Windows API или escape-последовательности ANSI в Linux. Правильное сочетание кода текста и кода фона позволяет выделять важные сообщения и улучшать визуальное восприятие информации.

В Windows используется функция SetConsoleTextAttribute:

  • Младшие 4 бита задают цвет текста.
  • Старшие 4 бита задают цвет фона.
  • Пример: код 0x1E – желтый текст (0xE) на синем фоне (0x1).

Пример кода:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(hConsole, 0x1E);

printf(«Текст с желтым цветом на синем фоне\\n»);

SetConsoleTextAttribute(hConsole, 7); // возвращение к белому цвету

В Linux применяется escape-последовательность ANSI с объединением кода текста и фона через точку с запятой:

  • Формат: \033[<код_текста>;<код_фона>m
  • Пример: \033[33;44m – желтый текст на синем фоне

Пример кода:

printf(«\033[33;44mЖелтый текст на синем фоне\033[0m\\n»);

Создание функции для упрощения смены цвета текста

Пример функции для Windows:

void SetColor(int color) {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, color);
}
  • Параметр color – числовой код цвета (текст и фон).
  • Использование функции: SetColor(4); printf(«Красный текст\n»);

Пример функции для Linux с ANSI-кодами:

void SetColorLinux(int text, int background) {
printf("\033[%d;%dm", text, background);
}
  • Параметры text и background – коды цвета текста и фона.
  • Функция позволяет централизованно управлять цветами в циклах и при многократных вызовах printf.

Выбор стандартных цветов консоли в C

Выбор стандартных цветов консоли в C

В языке C стандартные цвета консоли задаются через числовые коды, которые различаются для Windows и Linux. В Windows используются коды от 0 до 15 для текста и фона одновременно. Каждый цвет соответствует конкретному числу:

  • 0 – черный
  • 1 – синий
  • 2 – зеленый
  • 3 – голубой
  • 4 – красный
  • 5 – пурпурный
  • 6 – желтый
  • 7 – белый
  • 8 – ярко-серый
  • 9 – ярко-синий
  • 10 – ярко-зеленый
  • 11 – ярко-голубой
  • 12 – ярко-красный
  • 13 – ярко-пурпурный
  • 14 – ярко-желтый
  • 15 – ярко-белый

В Linux стандартные цвета задаются через escape-последовательности ANSI с кодами 30–37 для текста и 40–47 для фона. Рекомендуется использовать таблицу соответствия для быстрого выбора цвета:

  • 30 – черный текст, 40 – черный фон
  • 31 – красный текст, 41 – красный фон
  • 32 – зеленый текст, 42 – зеленый фон
  • 33 – желтый текст, 43 – желтый фон
  • 34 – синий текст, 44 – синий фон
  • 35 – пурпурный текст, 45 – пурпурный фон
  • 36 – голубой текст, 46 – голубой фон
  • 37 – белый текст, 47 – белый фон

При выборе стандартного цвета важно учитывать читаемость текста на фоне консоли и совместимость с используемой системой. Для Windows коды можно объединять в одном значении, а для Linux комбинировать через точку с запятой.

Использование пользовательских цветов через RGB на Windows

В Windows стандартные 16 цветов консоли можно расширить, используя пользовательские цвета через RGB. Для этого применяют функцию SetConsoleScreenBufferInfoEx, которая позволяет задавать точные значения красного, зеленого и синего каналов для каждого цвета консоли.

Последовательность действий для установки RGB-цвета:

  1. Получить дескриптор консоли через GetStdHandle(STD_OUTPUT_HANDLE).
  2. Создать структуру CONSOLE_SCREEN_BUFFER_INFOEX и заполнить ее текущими параметрами консоли.
  3. Задать новые значения RGB для нужного цвета.
  4. Применить изменения с помощью SetConsoleScreenBufferInfoEx.

Пример таблицы для выбора RGB-значений:

Цвет R G B
Пользовательский красный 255 50 50
Пользовательский зеленый 50 255 50
Пользовательский синий 50 50 255
Пользовательский желтый 255 255 50

Сохранение и восстановление исходного цвета текста

Сохранение и восстановление исходного цвета текста

В Windows сохраняют исходный цвет через структуру CONSOLE_SCREEN_BUFFER_INFO:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_SCREEN_BUFFER_INFO csbi;

GetConsoleScreenBufferInfo(hConsole, &csbi);

WORD originalColor = csbi.wAttributes;

SetConsoleTextAttribute(hConsole, originalColor);

printf(«\033[31mКрасный текст\033[0m\\n»);

Пример работы с цветами текста в цикле

Пример работы с цветами текста в цикле

Пример для Windows:

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

WORD colors[] = {4, 2, 6, 1, 5}; // красный, зеленый, желтый, синий, пурпурный

for(int i = 0; i < 5; i++) {

  SetConsoleTextAttribute(hConsole, colors[i]);

  printf(«Текст цвета %d\\n», colors[i]);

}

SetConsoleTextAttribute(hConsole, 7); // возвращение белого цвета

Для Linux используют escape-последовательности ANSI и массив с кодами текстов или фонов:

int codes[] = {31, 32, 33, 34, 35};

for(int i = 0; i < 5; i++) {

  printf(«\033[%dmТекст цвета %d\033[0m\\n», codes[i], codes[i]);

}

Рекомендуется создавать функции-обертки для смены цвета внутри цикла, чтобы избежать дублирования кода и гарантировать восстановление исходного цвета после завершения цикла.

Вопрос-ответ:

Как задать цвет текста в консоли Windows через C?

В Windows цвет текста задается с помощью функции SetConsoleTextAttribute, которая принимает дескриптор консоли и код цвета. Дескриптор получают через GetStdHandle(STD_OUTPUT_HANDLE). Код цвета формируется из младших 4 бит для текста и старших 4 бит для фона. Например, код 0x4E задает красный текст на желтом фоне. После вывода текста рекомендуется вернуть исходный цвет, чтобы не изменять оформление остальных сообщений.

Можно ли использовать пользовательские цвета RGB в C на Windows?

Да, стандартные 16 цветов можно заменить пользовательскими через RGB с помощью структуры CONSOLE_SCREEN_BUFFER_INFOEX и функции SetConsoleScreenBufferInfoEx. В структуре задаются значения красного, зеленого и синего каналов для каждого цвета. После установки пользовательских оттенков стандартные коды 0–15 будут ссылаться на новые цвета, что позволяет выводить текст с уникальной цветовой палитрой.

Как изменить цвет текста в консоли Linux с помощью C?

В Linux цвет текста управляется escape-последовательностями ANSI. Формат кода: \033[<код_текста>;<код_фона>m. Например, \033[31;44m задает красный текст на синем фоне. Для возврата к стандартному цвету используется \033[0m. Последовательности можно объединять с другими атрибутами, например, жирным шрифтом или подчеркиванием, чтобы формировать комплексное оформление консоли.

Как безопасно менять цвета текста в циклах при многократном выводе?

Для циклического вывода текста с разными цветами лучше использовать функции-обертки, которые сохраняют исходный цвет перед изменением и восстанавливают его после вывода. В Windows сохраняют исходный цвет через CONSOLE_SCREEN_BUFFER_INFO, а в Linux используют \033[0m. Это предотвращает случайное оставление неправильного цвета и упрощает работу с большими циклами, где текст выводится многократно с разными оттенками.

Ссылка на основную публикацию