La console en C

youplalayoupi -  
fiddy Messages postés 11069 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 !
A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,

Pour les couleurs en C : https://openclassrooms.com/fr/courses
Je te recommande plutôt la solution avec l'API.
Pour changer les propriétés comme la taille : https://docs.microsoft.com/en-us/windows/console/setconsolescreenbuffersize?redirectedfrom=MSDN

Cdlt
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Sinon pour linux, il y a aussi ce lien :
http://www.siteduzero.com/tutoriel-3-35298-des-couleurs-dans-la-console-linux.html ;-)
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
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