2012-02-08 9 views
12

Conosco "textcolor();" è per C++ e ho visto metodi per unix ... ma c'è anche modo per Windows?C testo a colori nelle applicazioni terminali in 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"); 
} 

Non riesco a trovare alcun nulla in rete ... speriamo la buona gente di overflow dello stack può aiutare: D

C per favore, non C++

risposta

28

Dal momento che si desidera un C e Windows specifico in modo lution, mi consiglia di utilizzare la funzione SetConsoleTextAttribute() nell'API Win32. Dovrai prendere un handle per la console e quindi passarlo con gli attributi appropriati.

Come semplice esempio:

/* 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; 
} 

Per ulteriori informazioni sugli attributi disponibili, guarda here.

Spero che questo aiuti! :)

+0

Grazie mille, funziona benissimo, mi chiedo solo come riportarlo al grigio chiaro predefinito? Molte grazie! –

+0

@JoeDF Per fare ciò è necessario leggere gli attributi originali con 'GetConsoleScreenBufferInfo()', memorizzarli in una variabile e quindi ripristinarli al termine. Ho aggiornato la risposta per mostrare come farlo. :) – Miguel

+0

GRAZIE MOLTO! : D –

-3

Il secondo con "include windows.h" funziona. L'altro è probabilmente l'inizio di

+0

Penso che questa sia una risposta alla risposta di Miguel? Dovresti usare commenti per questo. Hai invece aggiunto una nuova risposta. –

Problemi correlati