@andrkkk

Почему при смене цвета текста в printf цвет не меняется, а попадают символы?

Пишу клиент-серверное приложение, при первом запуске клиента,цвет меняется, запускаю второй клиент, у него уже просто символы, из-за чего это происходит?
5e916e974fd81142223384.png
Для изменения цвета использую следующий код:
#define RED   "\x1B[31m"
#define GRN   "\x1B[32m"
#define RESET "\x1B[0m"

printf(GRN "You have successfully connected" RESET "\n");
  • Вопрос задан
  • 199 просмотров
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
при первом запуске клиента,цвет меняется, запускаю второй клиент, у него уже просто символы

Потому что это скорее всего две консоли с разными настройками терминалов. Интерпертация esc-кодов, их удаление из выводимого потока и смена цвета -- это функция терминала.
Ответ написан
Комментировать
@Sumor
Первая консоль у вас поддерживает изменение цветов так как вы его изменяете, а консоль, которая создаётся автоматически при запуске второго приложения - нет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@KazukiSamuel
А вы уверенны, что там меняется цвет таким способом ?
В стандартном терминале Windows это делается так:
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  // you can loop k higher to see more color choices
  for(int k = 1; k < 255; k++)
  {
    // pick the colorattribute k you want
    SetConsoleTextAttribute(hConsole, k);
    cout << k << " I want to be nice today!" << endl;
  }
  //Код взят с https://stackoverflow.com/questions/4053837/colorizing-text-in-the-console-with-c

Такое ("#define RED "\x1B[31m"") изменение цвета характерно для Linux.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы