[Ajuda] Função CoresConsole - system();

Estou tentando criar uma função que configura as cores do console a partir da função system com o argumento “color” do dos. A definição da função e uma chamada da mesma está no código abaixo. A função ainda não funciona. Não consegui entender o que está saindo errado. A função system deveria receber um ponteiro de char como argumento, não é isso?

[code]#include <stdio.h>
#include <string.h>

void CoresConsole(const char *fundo, const char *texto) {
char *str = strcat(fundo, texto);
system(strcat("color ", str));
}

int main() {
CoresConsole(“4”, “F”);
printf(“Teste.\n”);
return 0;
}[/code]

[quote=drWHO]Estou tentando criar uma função que configura as cores do console a partir da função system com o argumento “color” do dos. A definição da função e uma chamada da mesma está no código abaixo. A função ainda não funciona. Não consegui entender o que está saindo errado. A função system deveria receber um ponteiro de char como argumento, não é isso?

[code]#include <stdio.h>
#include <string.h>

void CoresConsole(const char *fundo, const char *texto) {
char *str = strcat(fundo, texto);
system(strcat("color ", str));
}

int main() {
CoresConsole(“4”, “F”);
printf(“Teste.\n”);
return 0;
}[/code][/quote]

O seu console precisa suportar o padrão ansi para obedecer a saída correta dos caracteres que formatam o texto. Isso pode ser configurado neles.
Embora em sistemas unix o ansi seja o padrão, no windows não é.

Dá uma lida aqui:

O comando “color” é um comando intrínseco do CMD.EXE (assim como o DIR) e não pode ser chamado diretamente usando Runtime.exec ou system.
Você precisa pedir ao cmd.exe para executar o comando.

Você precisa usar system (“cmd /c color”); ou Runtime.exec (“cmd /c color”);

Na verdade nem sabia que existisse tal comando (que é bem bizarro, por sinal).

Muito esquisito eu usar, por exemplo, COLOR 6B produz uma cor de burro quando foge: