Le deuxieme parametre de printf
doumbia.danse
Messages postés
52
Statut
Membre
-
doumbia.danse Messages postés 52 Statut Membre -
doumbia.danse Messages postés 52 Statut Membre -
Bonsoir,
Au fait j'arrive pas à bien comprendre la signification du deuxième paramètre la fonction
Au fait j'arrive pas à bien comprendre la signification du deuxième paramètre la fonction
printf, bien sûr je parle de ce symbole
...,
3 réponses
-
Bonsoir je vais reprendre ce que @KX à dit dans son dernier poste pour l'approfondir, ses fonctions sont appelé "fonction à nombre d'arguments variables" et la majeure partie de ces variables je ne parle pas forcément de
printf()
utilise une / des macro qui est va_start pour affecter un pointeur X vers le tout premier argument de la pile et va_end pour terminer en gros lorsque le traitement de cette pile est finie.
Sans rentré plus en détail sur chaque fonction je t'invite a consulté le manuel de stdarg.hsur les instructionva_list, va_arg, va_start etc..
bref un exemple sera mieux qu'un long discours
Attention le code est un exemple
à bientôt
#include <stdio.h> #include <stdarg.h> /** * Attention dans cette exemple j'utilise * printf & c'est un choix volentaire * le code est pas optimiser attention **/ void f_ExempleAvancer( char *pStr, ... ){ va_list List; //Liste va_start( List, pStr ); while( *pStr ){ if( *pStr == '%' ){ switch( *(++pStr) ){ case 's' : printf( "Chaîne \t\t: %s\n", (char*)va_arg(List,char*) ); break; case 'd': printf( "Entier / Operation\t: %d\n", (int)va_arg(List, int) ); break; case 'f': printf( "Double / Operation\t: %f\n", (float)va_arg(List, double)); break; default: perror( "format inconnu\n" ); break; } } pStr++; } va_end(List); } //Fonction principale int main( void ){ //Teste de la Fonction Avancer f_ExempleAvancer("%s\t,%s \n", "@KX est ", "Modérateur"); f_ExempleAvancer("%s %s %d %f \n", "Bonjour", "@sambia39", 2+2, 10/5.2); return ( 0 ); }
Toute connaissance est une réponse à une question. -
Bonjour,
Ça veut dire que tu peux mettre 0 paramètre, 1 paramètre ou plusieurs paramètres. Cela va dépendre du nombre de pattern que tu vas mettre dans le premier paramètre. Exemples :
printf("Hello World! "); printf("Hello %s !", "World"); printf("%s %s !", "Hello", "World"); -
je sais leur rôle mais c'est plutôt le type même que je veux connaitre, comme par exemple le premier c'est
const char*
, et c'est maintenant le type du second que je veux savoir , puisque j'aimerais créer une fonction qui prend en premier paramètre unint a
, en deuxièmeconst char *chaine
et en troisième un type non fixe ça peut être unint
ouchar
ouchar *
etc