Passage de paramètres variable en C

Passage de paramètres variable en C - Programmation

Marsh Posté le 11-09-2001 à 17:00:52    

Meow,
 
Comment fait-on une fonction c avec passage de paramètres en nombre variable ( genre printf ) ?
J'ai vu dans des includes l'utilisation de "va_list" ou de "..." en paramètres.
Quelqu'un pourrait-il m'expliquer et me donner un exemple (prototype, appel, récupération des paramètres dans la fonction).
 
Merci.  :hello:

Reply

Marsh Posté le 11-09-2001 à 17:00:52   

Reply

Marsh Posté le 11-09-2001 à 18:41:56    

Y a t'il des informaticiens dans la salle ?  :(  
 
 
Réponse pour ceux que cela intéresse  :bounce:  
 
 
 
/****************************************************************
MODULE : nico.c
AUTEUR : Nicolas COLIN
DATE : 11.09.2001
HISTORIQUE:
**************************************************
***************/
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <errno.h>
#include <isam.h>
#include <fcntl.h>
#include <stdarg.h>
#include <sys/types.h>
#include <sys/stat.h>
 
 
 
/*************************************************
***************
   Prototypes
**************************************************
***************/
 
int  fncTraceSoc( int iNbArg, ... );
 
 
 
/***************************************************************
FONCTION : main
OBJET    : hehe
***************************************************************/
void main( void )
{
char szMiaou[6] = {'M', 'i', 'a', 'o', 'u', 0x00 };
 
 fncTraceSoc( 1, 10, szMiaou );
 printf( "szMiaou : %x\n", szMiaou );
 
}  /*  main  */
 
 
 
/***************************************************************
FONCTION : fncTraceSoc
OBJET    : Envoi les traces par socket sur une base c-isam.
***************************************************************/
int  fncTraceSoc( int iNbArg, ... )
{
va_list  vlParam;
int  iVal;
char  *pcMsg;
 
 va_start( vlParam, iNbArg );
 
 iVal = va_arg( vlParam, int );
 
 printf( "iVal = %d\n", iVal );
 
 pcMsg = va_arg( vlParam, char * );
 
 printf( "Msg = %s\n", pcMsg );
 printf( "pcMsg : %x\n", pcMsg );
 
 va_end( vlParam );
 
 return( 0 );
 
}  /*  fncTraceSoc  */
 
 
 
/********************************************************************/
/*      FIN de trace.c                      */
/********************************************************************/

Reply

Marsh Posté le 11-09-2001 à 20:26:38    

rien compris? tu demande et tu reponds?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed