mudar a cor em programação c [RESOLVIDO]

1. mudar a cor em programação c [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 13/11/2013 - 15:19h

boa pessoal eu estou estudando programação C e estou com uma dúvida como mudar a cor da fonte
exemplo a cor esta em branco eu quero deixar verde as letras do programa
alguém sabe como?


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/11/2013 - 23:03h

O programa que você mostrou "para Windows" nem usa os recursos que o Windows traz para o C, mas chama comandos externos do DOS para limpar a tela e trocar de cor. É gambiarra da pior espécie.

A forma de fazer no Linux (ou qualquer outro UNIX) é como eu mostrei. Se você não entendeu, leia a documentação de terminfo e putp, que são partes da biblioteca de manipulação de texto em tela chamada curses (ou ncurses, no caso do Linux).

A única coisa que eu esqueci de mencionar é que você precisa indicar a biblioteca curses na hora de gerar no Linux o executável do programa que eu mostrei. Se você o tiver salvado no arquivo "teste_cores.c", pode compilá-lo com o seguinte comando.

gcc teste_cores.c -o teste_cores -lcurses 


3. Re: mudar a cor em programação c [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/11/2013 - 21:57h

Em C puro, não existe nem cor (nem fonte, nem console).

O que você quer fazer depende do sistema operacional e do tipo de dispositivo em que você está exibindo seu texto. Seria bom que você dissesse em qual SO está trabalhando.


4. Re: mudar a cor em programação c [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 14/11/2013 - 06:23h

paulo1205 escreveu:

Em C puro, não existe nem cor (nem fonte, nem console).

O que você quer fazer depende do sistema operacional e do tipo de dispositivo em que você está exibindo seu texto. Seria bom que você dissesse em qual SO está trabalhando.


então amigo eu estou programando para Linux mesmo estou usando o Sabayon a minha IDE é editor nano


5. Re: mudar a cor em programação c [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/11/2013 - 20:48h

O programa abaixo deve dar uma ideia de como fazer em baixo nível.

#include <curses.h>
#include <term.h>
#include <stdio.h>
#include <unistd.h>

int main(void){
int cor;

setupterm(NULL, STDOUT_FILENO, NULL);
putp(exit_attribute_mode);
for(cor=0; cor<max_colors; cor++){
putp(tparm(set_a_foreground, cor));
printf("Cor %d normal ", cor);
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);
}
printf("Cor reset normal ");
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);

return 0;
}


Note que esse programa funciona mesmo com terminais que não suportam cores, simplesmente ignorando os comandos que pedem para mudar a cor. Se o terminal for muito chinfrim, ignora também os comandos que colocam o modo bold. (Supondo que você esteja com um emulador de terminais que suporte 256 cores simultâneas -- como versões novas do xterm, konsole e gnome-terminal -- experimente rodar o programa variando o valor da variável de ambiente TERM para "dumb", "vt100", "ansi", "xterm-16color" e "xterm-256color".)

Dá para descer mais o nível, amarrando o programa a um tipo de terminal específico e enviando diretamente as sequências de controle particulares desse terminal. Só que eu recomendo que você nunca faça isso -- até porque, como você viu acima, é muito fácil não usar cores, se elas não estiverem presentes.

E dá para subir o nível, usando realmente as funções da libcurses para manipulação de tela, criando uma interface de texto com menus, janelas, campos, painéis etc.


6. Re: mudar a cor em programação c [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 14/11/2013 - 22:42h

paulo1205 escreveu:

O programa abaixo deve dar uma ideia de como fazer em baixo nível.

#include <curses.h>
#include <term.h>
#include <stdio.h>
#include <unistd.h>

int main(void){
int cor;

setupterm(NULL, STDOUT_FILENO, NULL);
putp(exit_attribute_mode);
for(cor=0; cor<max_colors; cor++){
putp(tparm(set_a_foreground, cor));
printf("Cor %d normal ", cor);
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);
}
printf("Cor reset normal ");
putp(enter_bold_mode);
printf("e \"bold\".\n");
putp(exit_attribute_mode);

return 0;
}


Note que esse programa funciona mesmo com terminais que não suportam cores, simplesmente ignorando os comandos que pedem para mudar a cor. Se o terminal for muito chinfrim, ignora também os comandos que colocam o modo bold. (Supondo que você esteja com um emulador de terminais que suporte 256 cores simultâneas -- como versões novas do xterm, konsole e gnome-terminal -- experimente rodar o programa variando o valor da variável de ambiente TERM para "dumb", "vt100", "ansi", "xterm-16color" e "xterm-256color".)

Dá para descer mais o nível, amarrando o programa a um tipo de terminal específico e enviando diretamente as sequências de controle particulares desse terminal. Só que eu recomendo que você nunca faça isso -- até porque, como você viu acima, é muito fácil não usar cores, se elas não estiverem presentes.

E dá para subir o nível, usando realmente as funções da libcurses para manipulação de tela, criando uma interface de texto com menus, janelas, campos, painéis etc.



Boa noite amigo tudo bem?
então eu olhei o seu código e eu não entendi muita coisa não hehehe
sem falar que essa biblioteca curses.h
ela não existe o compilador fala eu tentei de vários jeitos mais nada
tipo eu olhei o código do Windows como referencia mais ou menos


# include <stdio.h>
# include <stdlib.h>
# include <conio.h>

int main(){
system ("cls"); // limpa a tela
system ("color 0B"); // cor de fundo preta e letras azuis brilhantes
printf ("\n\n\t\t\tTESTE: AZUL");
getch();
system ("cls"); // limpa a tela
system ("color 4C"); // cor de fundo vermelha e letras vermelhas brilhantes
printf ("\n\n\t\t\tTESTE: VERMELHO");
getch();
system ("cls"); // limpa a tela
system ("color 5D"); // cor de fundo roxa e letras lilases brilhantes
printf ("\n\n\t\t\tTESTE: LILAS");
getch();
system ("cls"); // limpa a tela
system ("color 0E"); // cor de fundo preta e letras amarelas brilhantes
printf ("\n\n\t\t\tTESTE: AMARELO");
getch();
system ("cls"); // limpa a tela
system ("color 1B"); // cor de fundo azul e letras azuis claras
printf ("\n\n\n");
system ("color /? |more");
getch();
}

e deu certo só que agora agora eu queria transferir isso para Linux



7. Re: mudar a cor em programação c [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 14/11/2013 - 23:38h

paulo1205 escreveu:

O programa que você mostrou "para Windows" nem usa os recursos que o Windows traz para o C, mas chama comandos externos do DOS para limpar a tela e trocar de cor. É gambiarra da pior espécie.

A forma de fazer no Linux (ou qualquer outro UNIX) é como eu mostrei. Se você não entendeu, leia a documentação de terminfo e putp, que são partes da biblioteca de manipulação de texto em tela chamada curses (ou ncurses, no caso do Linux).

A única coisa que eu esqueci de mencionar é que você precisa indicar a biblioteca curses na hora de gerar no Linux o executável do programa que eu mostrei. Se você o tiver salvado no arquivo "teste_cores.c", pode compilá-lo com o seguinte comando.

gcc teste_cores.c -o teste_cores -lcurses 


Nossa amigo Muito Obrigado mesmo agora eu consegui eu não estava conseguindo compilar
eu não estava entendendo por causa da biblioteca curses.h que estava faltando ai eu instalei ela
e consegui compilar mais uma Vez Obrigado :)


8. Re: mudar a cor em programação c [RESOLVIDO]

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 15/11/2013 - 12:07h

Apenas uma dúvida josh, qual compilador você usa? Pois estou enfrentando o mesmo problema.


9. Re: mudar a cor em programação c [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 15/11/2013 - 15:19h

viana3 escreveu:

Apenas uma dúvida josh, qual compilador você usa? Pois estou enfrentando o mesmo problema.


estou usando o gcc amigo e voce tem que instalar a biblioteca curses.h

se você usa o ubuntu ta ai o link para instalar essa biblioteca

http://ubuntuforums.org/showthread.php?t=23001


10. Re: mudar a cor em programação c [RESOLVIDO]

Moises Viana Felipe
viana3

(usa openSUSE)

Enviado em 16/11/2013 - 09:22h

Muito obrigado Josh.


11. Re: mudar a cor em programação c [RESOLVIDO]

josh
josh

(usa Sabayon)

Enviado em 16/11/2013 - 11:35h

viana3 escreveu:

Muito obrigado Josh.


é Nois


12. Biblioteca Colors

João Paulo de Souza
weth767

(usa Ubuntu)

Enviado em 18/10/2017 - 11:15h


#ifndef CORES_H
#define CORES_H

#define preto(texto) printf("\33[0;30m %s \33[0m",texto)
#define vermelho(texto) printf("\33[0;31m %s \33[0m",texto)
#define verde(texto) printf("\33[0;32m %s \33[0m",texto)
#define marrom(texto) printf("\33[0;33m %s \33[0m",texto)
#define azul(texto) printf("\33[0;34m %s \33[0m",texto)
#define roxo(texto) printf("\33[0;35m %s \33[0m",texto)
#define ciano(texto) printf("\33[0;36m %s \33[0m",texto)
#define cinzaclaro(texto) printf("\33[0;37m %s \33[0m",texto)
#define pretoacinzentado(texto) printf("\33[1;30m %s \33[0m",texto)
#define vermelhoclaro(texto) printf("\33[1;31m %s \33[0m",texto)
#define verdeclaro(texto) printf("\33[1;32m %s \33[0m",texto)
#define amarelo(texto) printf("\33[1;33m %s \33[0m",texto)
#define azulclaro(texto) printf("\33[1;34m %s \33[0m",texto)
#define roxoclaro(texto) printf("\33[1;35m %s \33[0m",texto)
#define cianoclaro(texto) printf("\33[1;36m %s \33[0m",texto)
#define branco(texto) printf("\33[1;37m %s \33[0m",texto)

#endif


Basta chamar a biblioteca e usar os nomes da cores, lembrando que funciona sobre para texto, caso queira para outro tipo de dado precisa alterar o tipo de dado do printf de %s para ou outro



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts