7
votes

Console de couleur dans ANSI C?

est-il possible de colorer la sortie de la console en un simple ansi c? Sans une bibliothèque externe? Peut-il être fait sous Windows, Linux ou Mac OS X?


1 commentaires

Cette question peut-elle vous donner plus d'informations. Vous devriez vérifier les codes de couleur pour différentes couleurs. Soyez également prudent de réinitialiser les valeurs par défaut. Vous devez simplement formater les journaux de sortie avec différents codes de couleur. Link 1 . Link 2


5 Réponses :


7
votes

juste un simple ansi c?

non. La norme C ne suppose pas que le stdout est une console ou a une couleur.

peut-il être fait sous Windows, Linux ou Mac OS X?

Oui. Voir Comment puis-je imprimer à la console en couleur sur Mac OS X de manière croisée? pour Linux et Mac OS X.

Pour Windows, vous devrez peut-être accéder directement à Console fonctionne si vous souhaitez éviter les bibliothèques externes.


2 commentaires

Eh bien, d'une manière, l'API Windows est également une bibliothèque externe, juste une belle énorme. Et les séquences d'échappement terminale sont une API de leur propre, juste un très maladroit à utiliser ;-)


La réponse que vous liez pour exclut Windows!



0
votes

sous Linux, cela peut être fait, si vous connaissez les codes de contrôle spécifiques à la coque / séquences d'échappement.


2 commentaires

Ceux qui n'ont rien à voir avec la coquille.


Si vous utilisez les codes de Link1 Pulet par PRAVEEN sur une standard SH (Not Bash, pas CSH, pas ZSH) [Désolé, je voulais écrire unix à la place de Linux dans ma réponse] Vous obtenez ce que vous écrivez, les "codes de contrôle" , pas ce que tu veux, "les couleurs".



0
votes

Il est vrai que l'ISO C ne connaît rien sur la console capable d'afficher des couleurs, mais il existe une norme ANSI pour la gestion des capacités de console, basée sur des contrôles de caractères d'échappement. Cela fonctionne de manière transparente sous Linux et Mac OS X, mais elle échoue dans Windows, dans laquelle vous devez utiliser les primitives de l'API Win32.

Vous pouvez trouver ci-dessous une bibliothèque très simple qui permet d'effacer l'écran, d'afficher les couleurs et de localiser le curseur dans une coordonnée spécifique, sous une manière multiplateforme (Systèmes Win32 et Unix).

Il est livré avec des fichiers source CLARE C (.C et .h), Documentation Doxygen en espagnol (Doc /) et une simple démo (Main.c)

http://github.com/baltasarq/cscrutil/


1 commentaires

Ahoy, link est en bas , Matey!



5
votes

Oui, sous Linux / Mac, il est possible d'utiliser ANSI C89. Vous pouvez soit manipuler la police et la couleur du texte. Utilisation de la commande suivante:

#include <stdio.h>
#include <windows.h>

int main(void)
{   
    /* Point to our console */
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    int i = 0;

    /* Iterate through colors */ 
    for(; i < 255; i++)
    { /* i stands for color type: could refer to actual text color or background color of text */
        SetConsoleTextAttribute(hConsole, i);
        printf("Colorful text");
    }

    getchar();
    return 0;
}


2 commentaires

Cette réponse est bonne pour Linux et Mac, bien que ne fonctionne pas pour Windows, comme le demande OP. Eh bien, sauf si vous n'aviez pas chargé le module ANSI.SYS sur Windows XP Boot (ne fonctionnera pas sur Windows Vista et ci-dessus).


@Baltasarq, merci pour l'avis! J'ai mis à jour mon commentaire afin qu'il correspond à Windows OS aussi!



0
votes

Linux / OSX / UNIX

sur les systèmes POSIX Vous pouvez utiliser le séquences d'échappement ANSI .

Windows

sous Windows Il est un peu plus compliqué, il existe plusieurs solutions:

API WIN32

Utilisation de l'API Win32 Pour définir la couleur de sortie avant d'imprimer sur la console à l'aide de setconsoletextattribute et amis . Ceci est beaucoup plus lourd que de simplement incorporer des séquences d'échappement ANSI dans vos chaînes et vous oblige à gérer les fenêtres comme cas spécial.

Windows ansi.sys et remplacement

Version ancienne de Windows contenait Ansi.sys, mais cela a été supprimé dans les versions ultérieures. Ansicon est un remplacement pour cela que vous pouvez installer pour obtenir une prise en charge de code couleur ANSI dans l'invite de commande Windows: https: // github .com / adoxa / ansicon

Embeddable sans dépendances externes Solution

Voici un projet qui peut être facilement intégré à tout projet existant sans s'appuyer sur ANSI.SYS ou Ansicon étant installé.

Il faut une chaîne contenant des séquences d'échappement ANSI et les traduit vers les fonctions d'API équivalentes Win32 correspondantes: https : //github.com/mattn/ansicolor-w32.c


0 commentaires