Taille de printf
martin
-
martin -
martin -
Salut,
j'ai une question facile ET chiante en C++ :
Comment connaitre la taille que va necesiter un printf ( ou sprintf ou fprintf )
Je sais que ces fonctions renvoient déjà la taille de la chaine crée mais je ne veux pas avoir besoin d'ecrire dans la sortie standart ( ou dans un buffer ou un fichier ) pour la connaitre.
Est-ce que quelqu'un connait une fonction du genre
unsigned int quedalle_printf ( const char* format, ... )
qui ferait ça ?
Merci
P.S.
j'ai essayé
unsigned int i = sprintf( NULL , "blabla %s %i" , "azerty" , 45 );
en espérant - naïvement - qu'avec un pointeur sur buffer NULL la fonction se contentait de renvoyer gentiment la taille sans essayer d'écrire dans le buffer... mais surprise : non
j'ai une question facile ET chiante en C++ :
Comment connaitre la taille que va necesiter un printf ( ou sprintf ou fprintf )
Je sais que ces fonctions renvoient déjà la taille de la chaine crée mais je ne veux pas avoir besoin d'ecrire dans la sortie standart ( ou dans un buffer ou un fichier ) pour la connaitre.
Est-ce que quelqu'un connait une fonction du genre
unsigned int quedalle_printf ( const char* format, ... )
qui ferait ça ?
Merci
P.S.
j'ai essayé
unsigned int i = sprintf( NULL , "blabla %s %i" , "azerty" , 45 );
en espérant - naïvement - qu'avec un pointeur sur buffer NULL la fonction se contentait de renvoyer gentiment la taille sans essayer d'écrire dans le buffer... mais surprise : non
A voir également:
- Taille de printf
- Comment réduire la taille d'un fichier - Guide
- Reduire taille image - Guide
- Afficher taille dossier windows - Guide
- Taille clavier iphone - Guide
- Taille feuille a4 - Guide
sprintf ( buffer , "salut %s, tu as %i ans", nom, age );
je voudrais connaitre la taille exacte qui va être écrite dans le buffer et j'ai pas envie d'en déclarer un avec une taille fixe comma ça :
char buffer [ 1024 ] ; // ça j'en veux pas
sprintf ( buffer , "salut %s, tu as %i ans", nom, age );
// tout ça pour faire ça :
char *c = new char [ strlen ( buffer ) +1 ] ;
memcpy (c, buffer, strlen( buffer ) +1 );
// et retourner mon pointeur sur char pour l'utiliser ailleurs
return c;
ce que je cherche a obtenir c'est ça :
unsigned int l = calcul_taille_de_printf ( "salut %s, tu as %i ans", nom, age );
char *c = new char [ l ]; // ou = char[ l+1 ] si la fonction ne compte pas le zero final
sprintf ( c , "salut %s, tu as %i ans", nom, age );
// comme ça c'est propre et la taille peut être énorme je ne gacherais pas de la mémoire avec un gros buffer qui sert juste de transition à une copie
return c;
il doit bien avoir une #@¤$ de fonction dans <stdio.h> qui permette de savoir la taille d'une chaine formatée AVANT de la formater dans un buffer, un fichier ou de la sortir dans stdout
merci quand même de ton aide