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.