Connaitre la taille du résultat de sprintf
Bonjour,
je cherche à connaitre la taille de la chaine retourné par sprintf. Le but est de pouvoir alloué un espace mémoire pour ensuite y mettre la chaîne formaté. J'ai essayer en passant NULL comme premier paramètre pour seulement récupérer le retour de la fonction mais mon OS n'a pas apprécié.
Le but est de recréer la fonction g_strdup_printf de la glib, je vien de regarder les sources, cette fonction se contante d'appeler g_vasprintf qui fait le formatage et crée la chaîne.
Merci de votre aide ;)
Re: Connaitre la taille du résultat de sprintf
Citation:
Envoyé par gege2061
je cherche à connaitre la taille de la chaine retourné par sprintf. Le but est de pouvoir alloué un espace mémoire pour ensuite y mettre la chaîne formaté. J'ai essayer en passant NULL comme premier paramètre pour seulement récupérer le retour de la fonction mais mon OS n'a pas apprécié.
Effectivement, ce serait l'idéal. (C'est peut être même une extension avec certaines implémentations de la RTL).
Citation:
Le but est de recréer la fonction
g_strdup_printf de la glib, je vien de regarder les sources, cette fonction se contante d'appeler g_vasprintf qui fait le formatage et crée la chaîne.
Le truc connu plus ou moins portable est
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
#if defined (MSDOS) || defined (msdos) || defined (_windows)
#define F_NUL "nul"
#elif defined (linux)
#define F_NUL "/dev/nul"
#else
#error not supported
#endif
<...>
{
FILE *fp_nul = fopen(F_NUL, "w");
<...> |
(a faire une fois au debut du programme avec fp_nul accessible...)
Code:
int n = fprintf (fb_nul, "...", ...);
n contient le nombre de caractères émis.