La console en C

youplalayoupi -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai installé code::blocks sous ubuntu et quand je lance un programme en console, j'aimerais pouvoir modifier les propriétés de celle-ci. Un peu comme sous celle de Windows où on peut changer les couleurs / taille de la police et surtout la taille de la mémoire tampom. Malheuresement je ne peux que agrandir/réduire/ect la fenêtre de la console sans pouvoir accerder a ses propriétés quand je suis sous linux avec code::blocks.

Voilà, donc toute aide est la bienvenue ! Merci !
Configuration: Linux
Firefox 3.0.13

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    J'ai bien un début de solution, mais ça ne marchera que sur Linux (et encore, pas tous)

    Il s'agit d'utiliser des instructions en langage bash, via l'appel de la fonction system
    On peut faire ainsi quelques changements de style (mais très peu)

    Pour changer la couleur (en rouge par exemple) c'est quelque chose comme ça en bash :
    echo -en "\033 [31m"
    En C maintenant, ça doit donner à peu près ça :
    system("echo -en \"\\033 [31m\"");
    Je n'ai pas vérifié, parce que j'ai pas Linux sous la main mais je l'ai déjà fait...
    0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    J'ai retrouvé Ubuntu et j'ai fait une petite fonction qui peux aider pour la mise en forme du terminal.
    Cependant je tiens à rappeler que ma méthode marche sous Ubuntu mais qu'elle pourrait ne pas fonctionner avec d'autres distributions Linux (et pour Windows on ira directement voir la réponse de fiddy)
    #include <stdio.h>
    #include <string.h>
    
    void Style(char * commande)
    {
    	char part1[100]="echo -n \"\\033[";
    	char part2[10]="m\"";
    
    	strcat(part1,commande);
    	strcat(part1,part2);
    
    	system(part1);
    }
    Je n'ai pas trouvé de liste complète des commandes possibles, cependant voici celles que je connais :
    Style("0"); // style par défaut
    Style("1"); // en gras
    Style("2"); // inactif
    Style("4"); // souligner
    Style("7"); // style du curseur
    Style("8"); // style mot de passe (invisible)
    Style("9"); // barré
    Style("3N"); // couleur d'avant plan *
    Style("4N"); // couleur d'arrière plan *
    
    * N doit être remplacer par un chiffre
    0 : noir
    1 : rouge
    2 : vert
    3 : jaune
    4 : bleu
    5 : magenta
    6 : cyan
    7 : blanc
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Sinon pour linux, il y a aussi ce lien :
      http://www.siteduzero.com/tutoriel-3-35298-des-couleurs-dans-la-console-linux.html ;-)
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Salut fiddy !
      En comparant ma méthode avec ton lien je me pose une question :
      Est-ce qu'on peut toujours remplacer system(echo "..."); par printf("..."); ?
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > KX Messages postés 19031 Statut Modérateur
         
        Est-ce qu'on peut toujours remplacer system(echo "..."); par printf("..."); ?
        En terme de fonctionnalité oui. Mais c'est déconseillé pour deux raisons :
        1/ C'est beaucoup plus gourmand en mémoire de par l'utilisation de la fonction system
        2/ Tu perds largement en portabilité.

        Par contre, avec le printf, faut faire attention à vider le buffer stdout soit de manière explicitement soit c'est fait automatiquement.

        Cdlt
        0