Printf FLags

Résolu/Fermé
Anonymouss - 28 avril 2013 à 12:40
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 28 avril 2013 à 15:00
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
28 avril 2013 à 15:00
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