Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fontion à la sprintf

2 réponses
Avatar
TSalm
Bonjour,

Une fonction doit prendre des arguments à la sprintf pour formater une
chaine.
Pour test, j'ai tenté le code ci-dessous :
/*----------------------------------------*/
#include <stdio.h>
#include <stdarg.h>

void printIt( const char *format, ... )
{
char out[2000];

va_list arg;
va_start( arg, format );

snprintf( out , 2000 , format , arg );
va_end(arg);

printf(">> %s <<\n" , out );
}


int main( )
{
int a = 10;
printIt ( "Hello %i",a);

printf(">> Hello %i",a);

return 0;
}
/*----------------------------------------*/

Ce qui me retourne :
>> Hello 2293572 <<
>> Hello 10

Y a t-il une solution pour réutiliser la puissance de sprintf ?
-TSalm

--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/

2 réponses

Avatar
Mickaël Wolff
TSalm wrote:
void printIt( const char *format, ... )
{
char out[2000];

va_list arg;
va_start( arg, format );

snprintf( out , 2000 , format , arg );


vsnprintf prend en quatrième argument un va_list, et non snprintf.

va_end(arg);

printf(">> %s <<n" , out );
}



--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
TSalm
Le Sat, 10 Oct 2009 06:59:54 +0200, Mickaël Wolff
a écrit:

TSalm wrote:
void printIt( const char *format, ... )
{
char out[2000];
va_list arg;
va_start( arg, format );
snprintf( out , 2000 , format , arg );


vsnprintf prend en quatrième argument un va_list, et non snprintf.




Merci. Ca fonctionne parfaitement.