Как задать цвет текста в c пример
Перейти к содержимому

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

  • автор:

Цвет текста в консоли

Подскажите, как настроить цвет текста в консоли? Ну, как бы что нужно писать? COLOR_WINDOWTEXT? И как? Добавлено. Ну, например, чтобы программа Hello world выводила зелёные буковки на экран.

#include using namespace std; int main()

Отслеживать
51.4k 87 87 золотых знаков 268 268 серебряных знаков 508 508 бронзовых знаков
задан 6 июн 2011 в 15:47
55 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
Речь про программу для ОС Windows?
6 июн 2011 в 15:56
6 июн 2011 в 15:59

ну например что бы программа Hellow world выводила зелёные буковки на экран. #include using namespace std; int main()

6 июн 2011 в 16:01
6 июн 2011 в 16:02
чё-то не очень помогло. По конкретней можно ?
6 июн 2011 в 16:06

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В Visual C++ установка цвета последующего текста, например, в красный цвет делается так:

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, FOREGROUND_RED); 

Для сборки подключить windows.h.

А в Borland C++ так:

textcolor(RED); 

Для сборки подключить conio.h.

Отслеживать
ответ дан 6 июн 2011 в 16:25
34.5k 27 27 золотых знаков 98 98 серебряных знаков 214 214 бронзовых знаков
6 июн 2011 в 16:30
а как сделать что-бы цвет был таким только в cout<<"ТУТ"; 6 июн 2011 в 16:34 Переопредели оператор << 6 июн 2011 в 16:50 6 июн 2011 в 17:09

// устанавливает цвет текста и подложки в консоли // 2 - значение цвета фона, 0 - значение цвета текста system("color 20" ); cout  

Атрибуты цветов задаются в виде ДВУХ шестнадцатеричных цифр -- первая задает цвет фона, а вторая определяет цвет переднего плана. Каждая цифра может иметь следующие значения:

  • 0 = Черный 8 = Серый
  • 1 = Синий 9 = Светло-синий
  • 2 = Зеленый A = Светло-зеленый
  • 3 = Голубой B = Светло-голубой
  • 4 = Красный C = Светло-красный
  • 5 = Лиловый D = Светло-лиловый
  • 6 = Желтый E = Светло-желтый
  • 7 = Белый F = Ярко-белый

Цветовое оформление консольного вывода

Кратко о том, как сделать для своей консольной программы или скрипта цветной вывод текста, а также дополнить его другими элементами оформления. Собственно, назначить можно цвет текста, цвет фона под ним, сделать текст жирным, подчеркнутым, невидимым и даже мигающим.

Шаблон для использования в современных командных оболочках и языках программирования таков: \x1b[. m. Это ESCAPE-последовательность, где \x1b обозначает символ ESC (десятичный ASCII код 27), а вместо ". " подставляются значения из таблицы, приведенной ниже, причем они могут комбинироваться, тогда нужно их перечислить через точку с запятой.

атрибуты
0 нормальный режим
1 жирный
4 подчеркнутый
5 мигающий
7 инвертированные цвета
8 невидимый
цвет текста
30 черный
31 красный
32 зеленый
33 желтый
34 синий
35 пурпурный
36 голубой
37 белый
цвет фона
40 черный
41 красный
42 зеленый
43 желтый
44 синий
45 пурпурный
46 голубой
47 белый

Теперь несколько примеров. Все это можно опробовать, введя в консольном окне echo -e "текст примера" .

Ввод Результат
\x1b[31mTest\x1b[0m image
\x1b[37;43mTest\x1b[0m image
\x1b[4;35mTest\x1b[0m image

Обратите внимание, что во всех трех случаях после слова Test идет последовательность \x1b[0m, которая просто сбрасывает стиль оформления на стандартный.

Комплексный пример использования:

\x1b[1;31mСтрока\x1b[0m с
\x1b[4;35;42mразными\x1b[0m \x1b[34;45mстилями\x1b[0m
\x1b[1;33m
оформления\x1b[0m
image

Хорошая раскраска вывода часто значительно облегчает восприятие информации. Так что пробуйте и экспериментируйте.

P.S. Также об этом и некотором другом можно прочитать в man console_codes . Спасибо Riateche за подсказку.

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

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 13 человек(а).

Количество просмотров этой статьи: 15 018.

В этой статье:

Изменение цвета текста или фигур в программе на C позволит выделить их при запуске программы пользователем. Процесс изменения цвета текста и фигур является довольно простым, так как все необходимые функции содержатся в стандартных библиотеках. Вы можете изменить цвет всего, что выводится на экран.

Часть 1 из 2:

Изменение цвета выводимого текста

Step 1 Подключите стандартную библиотеку ввода-вывода.

Подключите стандартную библиотеку ввода-вывода. Эта библиотека позволяет изменить цвет выводимого на экран текста. Добавьтев заголовок своей программы следующую строку: [1] X Источник информации

#include

Step 2 Подключите библиотеку консольного ввода-вывода.

Подключите библиотеку консольного ввода-вывода. Это позволит программе считать ввод с клавиатуры пользователем. Добавьте эту библиотеку под библиотекой stdio.h :

#include #include

Step 3 Используйте функцию textcolor, чтобы задать цвет текста.

Используйте функцию textcolor , чтобы задать цвет текста. С помощью этой функции вы можете разнообразить цвет выводимого текста. Цвета должны быть написаны заглавными буквами или представлены в цифровом виде:

#include #include main()  textcolor(RED); // Вместо «RED» можно было ввести «4», но тогда снизится читаемость кода > 
Цвет Числовое значение
BLACK (черный) 0
BLUE (синий) 1
GREEN (зеленый) 2
CYAN (голубой) 3
RED (красный) 4
MAGENTA (пурпурный) 5
BROWN (коричневый) 6
LIGHTGRAY (светло-серый) 7
DARKGRAY (темно-серый) 8
LIGHTBLUE (светло-синий) 9
LIGHTGREEN (светло-зеленый) 10
LIGHTCYAN (бирюзовый) 11
LIGHTRED (розовый) 12
LIGHTMAGENTA (светло-пурпурный) 13
YELLOW (желтый) 14
WHITE (белый) 15
  • Но на этом список цветов не заканчивается. Их доступность зависит от установленного графического драйвера и используемого цветового режима. Цвета должны быть написаны заглавными буквами. [2] X Источник информации

Step 4 Добавьте выводимый текст и закончите программу.

Добавьте выводимый текст и закончите программу. Используйте функцию cprintf для отображения текста в выбранном цвете. Добавьте функцию getch в конец программы, чтобы закрыть ее после нажатия пользователем любой клавиши.

#include #include main()  textcolor(RED); // Вместо «RED» можно было ввести «4», но тогда снизится читаемость кода cprintf("Hello, World!"); getch(); return 0; > 

Как изменить цвет текста в терминале Linux

Обычно вывод текста в терминале пользователя выглядит слишком монохромно. Однако добавить больше красок — совсем несложно. В данном скрипте я предлагаю вспомогательные методы для вывода текста, использования заданных цветов и работы с окнами терминала в тёмном и светлом режимах.

⬇️ Скачать color.zip — 2.7 KB (прим. редактора — потребуется регистрация на сайте)

Введение

Текст, выводимый в терминале по умолчанию, является одноцветным и не предоставляет простого способа указать на контекст. Например, вы можете захотеть, чтобы ошибка отображалась красным цветом, успех — зелёным, или чтобы важная информация была выделена жирным шрифтом.

Добавление цвета к выводу текста в терминале — простая задача, которая заключается в выводе правильных управляющих символов перед вашим текстом.

Цвета в терминале

Чтобы вывести цветной текст, вам следует выполнить printf или echo -e управляющих символов для требуемого цвета ( -e обеспечивает интерпретацию управляющих символов), далее вывести ваш текст, а затем (просто для аккуратности) сбросить вывод обратно к значениям по умолчанию. В таблице ниже приведены коды:

Цвет Основной Фон
Стандартный \033[39m \033[49m
Чёрный \033[30m \033[40m
Тёмно-красный \033[31m \033[41m
Тёмно-зелёный \033[32m \033[42m
Тёмно-жёлтый «Оранжевый» \033[33m \033[43m
Тёмно-синий \033[34m \033[44m
Темно-пурпурный \033[35m \033[45m
Тёмно-голубой \033[36m \033[46m
Светло-серый \033[37m \033[47m
Тёмно-серый \033[90m \033[100m
Красный \033[91m \033[101m
Зелёный \033[92m \033[101m
Оранжевый \033[93m \033[103m
Синий \033[94m \033[104m
Пурпурный \033[95m \033[105m
Голубой \033[96m \033[106m
Белый \033[97m \033[107m

и код сброса \033[0m

Формат строки для основного цвета:

"\033[" + ";" + " + "m"
"\033[" + "" + "m"

Эти коды могут быть использованы вместе для одновременного изменения основного цвета и фона.

Применяем код

Простой пример красного текста:

printf "\033[91mThis is red text\033[0m"

Пример красного текста на белом фоне:

printf "\033[91m\033[107mThis is red text on a white background\033[0m"

Это выглядит довольно громоздко, так что я создал несколько простых подпрограмм, которые позволят задать цвет текста более изящным способом.

Вспомогательные функции

Следующие вспомогательные функции позволяют вам делать такие вещи, как:

WriteLine "This is red text" "Red" WriteLine "This is red text on a white background" "Red" "White"
useColor="true" # Установите значение на false, если вы обнаружите, что ваша среда плохо обрабатывает цвета. # Возвращает код цвета для заданных цветов переднего/заднего плана # Этот код передаётся эхом в терминал перед выводом текста # для создания цветного вывода. # # строка foreground (основной цвет) имя_цвета. Необязательна, если не задан фон. # По умолчанию "Default", который использует системный цвет по умолчанию # строка background (фон) имя_цвета. Необязательна. По умолчанию используется $color_background # который устанавливается на основе текущего фона терминала. # возвращает строку function Color () < local foreground=$1 local background=$2 if [ "$foreground" == "" ]; then foreground="Default"; fi if [ "$background" == "" ]; then background="$color_background"; fi local colorString='\033[' # Основные цвета case "$foreground" in "Default") colorString='\033[0;39m';; "Black" ) colorString='\033[0;30m';; "DarkRed" ) colorString='\033[0;31m';; "DarkGreen" ) colorString='\033[0;32m';; "DarkYellow" ) colorString='\033[0;33m';; "DarkBlue" ) colorString='\033[0;34m';; "DarkMagenta" ) colorString='\033[0;35m';; "DarkCyan" ) colorString='\033[0;36m';; "Gray" ) colorString='\033[0;37m';; "DarkGray" ) colorString='\033[1;90m';; "Red" ) colorString='\033[1;91m';; "Green" ) colorString='\033[1;92m';; "Yellow" ) colorString='\033[1;93m';; "Blue" ) colorString='\033[1;94m';; "Magenta" ) colorString='\033[1;95m';; "Cyan" ) colorString='\033[1;96m';; "White" ) colorString='\033[1;97m';; *) colorString='\033[0;39m';; esac # Цвета фона case "$background" in "Default" ) colorString="$\033[49m";; "Black" ) colorString="$\033[40m";; "DarkRed" ) colorString="$\033[41m";; "DarkGreen" ) colorString="$\033[42m";; "DarkYellow" ) colorString="$\033[43m";; "DarkBlue" ) colorString="$\033[44m";; "DarkMagenta" ) colorString="$\033[45m";; "DarkCyan" ) colorString="$\033[46m";; "Gray" ) colorString="$\033[47m";; "DarkGray" ) colorString="$\033[100m";; "Red" ) colorString="$\033[101m";; "Green" ) colorString="$\033[102m";; "Yellow" ) colorString="$\033[103m";; "Blue" ) colorString="$\033[104m";; "Magenta" ) colorString="$\033[105m";; "Cyan" ) colorString="$\033[106m";; "White" ) colorString="$\033[107m";; *) colorString="$\033[49m";; esac echo "$" > # Выводит строку (включая перевод на строку) на терминал, используя заданные основной или фоновый # цвета # # строка The text to output (Текст для вывода). Необязательна, если не задан основной цвет. По умолчанию выводится только перевод на строку. # строка Foreground color name (Имя основного цвета). Необязательна, если не указан фон. По умолчанию "Default", который # использует системное значение по умолчанию # строка Background color name (Имя фонового цвета). Необязательна. По умолчанию используется $color_background, который устанавливается на основе # текущего фона терминала function WriteLine () < local resetColor='\033[0m' local str=$1 local forecolor=$2 local backcolor=$3 if [ "$str" == "" ]; then printf "\n" return; fi # Обратите внимание на использование форматного заполнителя %s. Это позволяет нам передавать "--" в качестве строк без ошибок if [ "$useColor" == "true" ]; then local colorString=$(Color $$) printf "$%s$\n" "$" else printf "%s\n" "$" fi > # Выводит строку без перевода на строку в терминал, используя заданные основные / фоновые цвета # # строка The text to output (Текст для вывода). Необязательна, если не задан основной цвет. По умолчанию выводится только перевод на строку. # строка Foreground color name (Имя основного цвета). Необязательна, если не указан фон. По умолчанию "Default", который # использует системное значение по умолчанию # строка Background color name (Имя фонового цвета). Необязательна. По умолчанию используется $color_background, который устанавливается на основе # текущего фона терминала function Write () < local resetColor="\033[0m" local forecolor=$1 local backcolor=$2 local str=$3 if [ "$str" == "" ]; then return; fi # Обратите внимание на использование форматного заполнителя %s. Это позволяет нам передавать "--" в качестве строк без ошибок if [ "$useColor" == "true" ]; then local colorString=$(Color $$) printf "$%s$" "$" else printf "%s" "$str" fi >

Работа с тёмным и светлым режимами

Во многих дистрибутивах Linux и Unix терминал имеет чёрный фон и белый текст. В macOS по умолчанию используется белый фон с чёрным текстом. Конечно, есть способы и средства для смены тёмного/светлого режима, но вам придется проверять и тестировать всё на собственной системе, чтобы найти то, что подходит именно вам.

Я предполагаю, что если мы используем mac, то можем всё протестировать напрямую, в противном случае — мы предполагаем черный фон и белый текст. Я также стараюсь придерживаться цветов по умолчанию, а там, где мне нужно немного цвета, я предпочитаю использование некоторых предопределённых цветов, которые, по моим представлениям, будут хорошо работать везде.

# Получает цвет фона терминала. Это очень наивная догадка # возвращает триплет RGB, значения от 0 до 64K function getBackground () < if [[ $OSTYPE == 'darwin'* ]]; then osascript -e \ 'tell application "Terminal" get background color of selected tab of window 1 end tell' else # См. https://github.com/rocky/shell-term-background/blob/master/term-background.bash # для получения исчерпывающей информации о том, как проверить цвет фона. Сейчас мы просто # предположим, что терминалы, не использующие macOS, имеют чёрный фон. echo "0,0,0" # здесь мы делаем предположения fi ># Определяет, находится ли текущий терминал в тёмном режиме (тёмный фон, светлый текст). # возвращает "true", если работает в тёмном режиме; false в противном случае function isDarkMode () < local bgColor=$(getBackground) IFS=','; colors=($bgColor); IFS=' '; # Фон более или менее тёмный? if [ $-lt 20000 ] && [ $ -lt 20000 ] && [ $ -lt 20000 ]; then echo "true" else echo "false" fi >

Как только мы получим приблизительное представление о том, с чем имеем дело, я выполню код ниже:

darkmode=$(isDarkMode) # Установим некоторые предопределённые цвета. Обратите внимание, что мы не можем достоверно определить фон # цвет терминала, поэтому мы избегаем специально устанавливать чёрный или белый цвет в качестве основного цвета # или фона. Вы всегда можете просто использовать "Белый" и "Чёрный", если вам действительно нужно # это сочетание, но предварительно тщательно протестируйте if [ "$darkmode" == "true" ]; then color_primary="Blue" color_mute="Gray" color_info="Yellow" color_success="Green" color_warn="DarkYellow" color_error="Red" else color_primary="DarkBlue" color_mute="Gray" color_info="Magenta" color_success="DarkGreen" color_warn="DarkYellow" color_error="Red" fi

и также воспользуюсь этими строками:

WriteLine "Predefined colors on default background" WriteLine WriteLine "Default colored text" "Default" WriteLine "Primary colored text" $color_primary WriteLine "Mute colored text" $color_mute WriteLine "Info colored text" $color_info WriteLine "Success colored text" $color_success WriteLine "Warning colored text" $color_warn WriteLine "Error colored text" $color_error WriteLine WriteLine "Default color on predefined background" WriteLine WriteLine "Default colored background" "Default" WriteLine "Primary colored background" "Default" $color_primary WriteLine "Mute colored background" "Default" $color_mute WriteLine "Info colored background" "Default" $color_info WriteLine "Success colored background" "Default" $color_success WriteLine "Warning colored background" "Default" $color_warn WriteLine "Error colored background" "Default" $color_error 

Получаем примерно такую картину в классическом терминале Linux:

И такую в macOS:

Всё немного запутано, поэтому давайте добавим ещё одну функцию, которая обеспечит контрастный передний план на любом выбранном нами фоне:

# Возвращает имя цвета, который будет служить в качестве основного контрастного # цвета для заданного цвета фона. Эта функция предполагает, что $darkmode был # установлен глобально. # # строка background color name (имя фонового цвета). # возвращает строку, представляющую имя основного контрастного цвета function ContrastForeground () < local color=$1 if [ "$color" == "" ]; then color="Default"; fi if [ "$darkmode" == "true" ]; then case "$color" in "Default" ) echo "White";; "Black" ) echo "White";; "DarkRed" ) echo "White";; "DarkGreen" ) echo "White";; "DarkYellow" ) echo "White";; "DarkBlue" ) echo "White";; "DarkMagenta" ) echo "White";; "DarkCyan" ) echo "White";; "Gray" ) echo "Black";; "DarkGray" ) echo "White";; "Red" ) echo "White";; "Green" ) echo "White";; "Yellow" ) echo "Black";; "Blue" ) echo "White";; "Magenta" ) echo "White";; "Cyan" ) echo "Black";; "White" ) echo "Black";; *) echo "White";; esac else case "$color" in "Default" ) echo "Black";; "Black" ) echo "White";; "DarkRed" ) echo "White";; "DarkGreen" ) echo "White";; "DarkYellow" ) echo "White";; "DarkBlue" ) echo "White";; "DarkMagenta" ) echo "White";; "DarkCyan" ) echo "White";; "Gray" ) echo "Black";; "DarkGray" ) echo "White";; "Red" ) echo "White";; "Green" ) echo "Black";; "Yellow" ) echo "Black";; "Blue" ) echo "White";; "Magenta" ) echo "White";; "Cyan" ) echo "Black";; "White" ) echo "Black";; *) echo "White";; esac fi echo "$" >

Затем, в подпрограмме Color, мы можем сделать следующее:

function Color () < local foreground=$1 local background=$2 if [ "$foreground" == "" ]; then foreground="Default"; fi if [ "$background" == "" ]; then background="$color_background"; fi if [ "$foreground" == "Contrast" ]; then foreground=$(ContrastForeground $) fi . 

… и чтобы сделать наш текст с изменённым цветом фона немного более разборчивым, мы используем следующие строки:

WriteLine WriteLine "Default contrasting color on predefined background" WriteLine WriteLine "Primary colored background" "Contrast" $color_primary WriteLine "Mute colored background" "Contrast" $color_mute WriteLine "Info colored background" "Contrast" $color_info WriteLine "Success colored background" "Contrast" $color_success WriteLine "Warning colored background" "Contrast" $color_warn WriteLine "Error colored background" "Contrast" $color_error

Полученный результат в терминале Linux

… и в терминале macOS

НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *