Bonjour,
Pour me simplifier la vie, j'ai voulu ecrire une fonction
qui doit être appelé a la place d'un printf
pour profiter des charactères de control des terminaux.
Et ce sans forcement appeler d'autre fonctions
pour activer les changements de couleur.
d'où l'idée d'avoir une fonction cprintf qui aurait 3 parametres
en plus avant la chaine de format :
printf étant une fonction avec une liste de parametres variables, je m'etais dis
un peu naïvement j'avoue, qu'il suffirait de récupérer le premier paramêtre
via les va_list et va_start, et de passer tout ceci à printf.
Mais à priori la réflexion était trop simpliste...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #define NOIR 30 #define ROUGE 31 #define VERT 32 #define JAUNE 33 #define BLEU 34 #define MAGENTA 35 #define CYAN 36 #define BLANC 37 #define FOND_NOIR 0 #define FOND_GRIS 40 #define FOND_ROUGE 41 #define FOND_VERT 42 #define FOND_JAUNE 43 #define FOND_BLEU 44 #define FOND_MAGENTA 45 #define FOND_CYAN 46 #define FOND_BLANC 47 #define VIDEO_NORMAL 1 #define VIDEO_INVERSE 7 void cprintf(int colour, int bgcolour, int VideoMode, char *format,...){ va_list args; va_start(args,format); printf("\E[%d;%d;%dm",VideoMode,colour,bgcolour); printf(format,args); printf("\E[0m"); va_end(args); } //pour pouvoir appeler comme ceci cprintf(ROUGE,FOND_NOIR,VIDEO_NORMAL, "Connection timeout. %d try remain\n",nbrTry--);
J'effectue actuellement les recherches pour trouver une solution a ce problème et ne manquerai pas de la partager si je la trouve.
[MODE PAS CLAIR]
Quelqu'un connaitrait il, si cela existe, la maniere de passer une liste d'arguments variable que recoit une fonction, à une autre fonction a arguments variables,elle meme appelée depuis cette 1ere ?
[/MODE PAS CLAIR]
Sinon, je reparse la chaine de format et récupère chaques argument pour faire des appels unitaire à printf.
Mais bon si une autre solution existe, autant ne pas mourrir idiot.:p
Merci d'avance.
Cordialement.
Partager