Мне было интересно, как я могу напечатать в консоли красочный текст? Я использую eclipse win64 os. Это связано с компилятором? Может ли кто-нибудь дать простой пример в C только с красным цветом или любым другим цветом?красочный текст с использованием printf в C
ответ
Я знаю, что это невероятно легко сделать в C++, но я нашел, что это для вас, чтобы посмотреть на в C:
#include <stdio.h>
#include <windows.h> // WinApi header
int main()
{
HANDLE hConsole;
int k;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// you can loop k higher to see more color choices
for(k = 1; k < 255; k++)
{
SetConsoleTextAttribute(hConsole, k);
printf("%3d %s\n", k, "I want to be nice today!");
}
getchar(); // wait
return 0;
}
Все комментарии помогут вам найти свой путь через код - Надеюсь, поможет!
Все ... ну, я думал достичь этого, используя ANSI. Я должен написать себе функцию для разбора стрингов и изменения атрибутов, которые я предполагаю ... –
@ TomášZato, ANSI больше не будет работать в Windows, потому что драйвер устройства 16-бит и, следовательно, несовместим с 64-битными системами (и даже не включен). – Synetech
Что вы подразумеваете под «Я знаю, что это невероятно легко сделать на C++»? –
Если вы хотите напечатать цветной текст в консоли Windows, вам придется использовать Windows API. Поддержка ANSI.sys больше не присутствует в Windows.
В Linux вы по-прежнему можете использовать escape-последовательности ANSI для цветного текста.
escape seq table здесь: http://ascii-table.com/ansi-escape-sequences.php Пример: printf ("\ x1b [1m Enable_BOLD \ n \ x1b [0m") ; – Doug
Если вам ограничено использование только printf()
, для этого требуется знание терминала, на который вы пишете. Вероятно, это терминал типа ANSI, поэтому это можно сделать. Библиотека Unix curses
(Linux) обрабатывает такую информацию независимым от терминала способом. В принципе, вам нужно будет определить или создать управляющие строки, чтобы включить терминал в режим red
, а затем снова вернуть его обратно (но как вы знаете, в каком состоянии оно было, прежде чем вы изменили его на запись красного текста?). В упомянутых библиотеках отслеживается информация о состоянии, среди многих других деталей.
Однако, если вы получаете строки организованы, то код, как это будет делать трюк (более или менее):
static const char to_red[] = "\033...";
static const char to_black[] = "\033...";
printf("%s%s%s\n", to_red, "hello world", to_black);
Твердая часть определения того, что происходит в постоянных строк (которые не нужны на самом деле быть постоянным).
Все это означает, что для выполнения задания может использоваться, например, Windows-специфический интерфейс, но на самом деле он не включает printf()
для управления цветами; вы вызываете Windows API для установки цвета, затем пишите с помощью printf()
, затем снова вызывайте API, чтобы восстановить цвет. Вероятно, есть функция запроса, позволяющая вам найти текущую настройку, которую вы используете, прежде чем изменять ее.
Консоль в Java использует stdout, на котором работает любая ОС. Для Windows вам необходимо получить доступ к Console API, чтобы изменить цвета. Для Linux или Mac консоль может поддерживать ANSI escape sequences, которая может изменять цвета консоли через stdout.
- 1. Как подчеркнуть текст с использованием printf в C
- 2. где текст напечатан C printf
- 3. как сделать bash оболочку отображать красочный текст?
- 4. Сложение с использованием Printf в C
- 5. Проблемы с C использованием float и printf
- 6. использованием Printf для вывода поплавков в C++
- 7. Несоответствие с использованием printf
- 8. вилка() в с использованием Printf
- 9. Можем ли мы написать красочный текст в том же EditText?
- 10. печати равной ширины столбцов в C с использованием PRINTF форматирования
- 11. печать * в соответствующем номере с использованием printf в C
- 12. Отключить красочный разделитель в PhpStorm
- 13. Декодирование выводов printf в C (Printf Primer)
- 14. Печать значения показателя экспоненты с использованием printf в c
- 15. Форматирование вывода двоичного поиска с использованием printf в C?
- 16. рисовать зигзагообразный рисунок в Objective-C с использованием Printf только
- 17. Печать '%' с Printf в C/C++
- 18. Формат вывода с использованием printf?
- 19. C Printf/чтения Collission
- 20. printf ошибка в C
- 21. Использование Printf в C
- 22. printf переменная в C
- 23. Касательно PRINTF в C
- 24. Использование printf в C++
- 25. Printf в C (типы)
- 26. printf функция в c
- 27. Printf путаница в C
- 28. отображение информации с использованием printf в Java
- 29. Перенаправление C++ Printf на C#
- 30. C++ printf с std :: string?
C не определяет цветопередачу; это зависит от особенностей терминала, который вы используете. Вероятно, есть некоторые escape-последовательности, которые вы можете распечатать, чтобы получить цветопередачу. Вам нужно будет выяснить, каковы эти escape-последовательности, а затем просто распечатать их. (Символ escape ASCII может быть представлен как '' \ x1B "'.) –
Если вы можете, я предлагаю использовать C++. Это сделает жизнь таким образом намного проще. Я предполагаю, что вы делаете это для обучения, так хорошо для вас. – nmagerko
@nmagerko Не могли бы вы рассказать мне, как окрасить заднюю панель консоли? спасибо :) – BugShotGG