Printf FLags

Résolu
Anonymouss -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour tous le monde,

mon printf affiche sans problème ma chaine de caractère et quelque soit le flags que j'entre, seule problème c'est qu'il m'affiche en plus le flag et le modulo correspondant !
en sachant que je voudrais qu'il REMPLACE mon module+flag par la chaîne de caractère que je lui donne.

je serai très reconnaissant à celui qui trouvera mon erreur.

EXEMPLE:
char *s = "String";
  
my_printf("Ma chaine %s, s);
 
me donne:
 
Ma chaine String%s


void            check_flags(char c, va_list ap) //permet de checker a quel flag correspond
{
  int           i;

  i = 0;
  while (tab[i].flag != '\0')
    {
      if (tab[i].flag == c)
        tab[i].print(ap);
      i++;
    }
}

int             my_printf(const char *format, ...)
{
  va_list       ap;
  int           i;

  i = 0;
  va_start(ap, format);
  while (format[i] != '\0')
    {
      if (format[i] == '%' && format[i+1] != '%')
        {
          check_flags(format[i + 1], ap);
          //i++;                                                                                                                                                                                                  
          my_putchar(format[i]);
        }
      else
        my_putchar(format[i]);
      i++;
    }
 



A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Si tu n'utilises pas va_arg() pour récupérer le contenu des arguments, aucune chance que ça marche.
De plus, si tu mets va_start(), il faut un va_end().

Dans le man, il y a un exemple : http://man.developpez.com/man3/va_arg.3.php

Cdlt,
0