Bonjour,
J'ai défini les define suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
#define taille_max_msg      1976
 
#define taille_max_msg_03   1582
Pour ne changer la taille d'un message qu'à un endroit.
Avant nous avions le code suivant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
fprintf(fic_messages, "%13s%02s%-1976s\n",
                msg_ts.wmsg_ven_num, msg_ts.wmsg_msg_typ, msg_ts.wmsg_msg_msg);
Que j'ai transformé ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
fprintf(fic_messages, "%13s%02s%-taille_max_msgs\n",
                msg_ts.wmsg_ven_num, msg_ts.wmsg_msg_typ, msg_ts.wmsg_msg_msg);
Bien évidemment cela ne donne pas le même résultat, je devais dormir quand j'ai écrit ça.
Maintenant la question est comment obtenir le même résultat, avec quelque chose d'élégant et de lisible
J'ai pensé à ceci, mais je trouve cela, pas très lisible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
char format[100];
strcpy(format,"%13s%02s%-");
strcat(format,itoa(taille_max_msg));
strcat(format,"s\n");
fprintf(fic_messages, format,
                msg_ts.wmsg_ven_num, msg_ts.wmsg_msg_typ, msg_ts.wmsg_msg_msg);
Avez vous une autre idée?
PS : Je sais que itoa n'est pas standard, mais il existe dans mon application.
Cordialement
soazig