2012-02-08 13 views
12

Sé "textcolor();" es para C++ y he visto métodos para Unix ... pero ¿hay alguna manera para Windows también?texto de color C en aplicaciones de terminal en Windows

#include <stdio.h> 
int main() 
{ 
    printf("\ntest - C programming text color!"); 
    printf("\n--------------------------------"); 
    printf("\n\n\t\t-BREAK-\n\n"); 
    textcolor(15); 
    printf("WHITE\n"); 
    textcolor(0); 
    printf("BLACK\n"); 
    textcolor(4); 
    printf("RED\n"); 
    textcolor(1); 
    printf("BLUE\n"); 
    textcolor(2); 
    printf("GREEN\n"); 
    textcolor(5); 
    printf("MAGENTA\n"); 
    textcolor(14); 
    printf("YELLOW\n"); 
    textcolor(3); 
    printf("CYAN\n"); 
    textcolor(7); 
    printf("LIGHT GRAY\n"); 
} 

no puedo encontrar cualquier cosa en la red ... esperemos que la buena gente de desbordamiento de pila puede ayudar: D

C por favor, no C++

Respuesta

28

Desde desea una C y Windows de manera específica lution, recomendaría usar la función SetConsoleTextAttribute() en la API de Win32. Deberá agarrar un asa a la consola y luego pasarlo con los atributos apropiados.

Como un simple ejemplo:

/* Change console text color, then restore it back to normal. */ 
#include <stdio.h> 
#include <windows.h> 

int main() { 
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
    CONSOLE_SCREEN_BUFFER_INFO consoleInfo; 
    WORD saved_attributes; 

    /* Save current attributes */ 
    GetConsoleScreenBufferInfo(hConsole, &consoleInfo); 
    saved_attributes = consoleInfo.wAttributes; 

    SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE); 
    printf("This is some nice COLORFUL text, isn't it?"); 

    /* Restore original attributes */ 
    SetConsoleTextAttribute(hConsole, saved_attributes); 
    printf("Back to normal"); 

    return 0; 
} 

Para obtener más información sobre los atributos disponibles, mira here.

Espero que esto ayude! :)

+0

Muchas gracias, funciona genial, solo me preguntaba cómo volver al gris claro predeterminado. ¡Muchas gracias! –

+0

@JoeDF Para hacerlo, deberá leer los atributos originales con 'GetConsoleScreenBufferInfo()', almacenarlos en una variable y luego restaurarlos cuando haya terminado. He actualizado la respuesta para mostrar cómo hacer esto. :) – Miguel

+0

¡GRACIAS MUCHO! : D –

-3

El segundo con el "incluir windows.h" funciona. El otro es probablemente el comienzo de

+0

Creo que esta es una respuesta en la respuesta de Miguel? Deberías usar comentarios para eso. Agregaste una nueva respuesta en su lugar. –

Cuestiones relacionadas