IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

structures et pointeurs de fonctions


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 77
    Points
    77
    Par défaut structures et pointeurs de fonctions
    bonsoir,

    voila mon probleme ce soir et que je n'arrive pas a etablir une liaison entre ma structures et le reste de ma fonction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    typedef struct fonction{
      char	c;
      int (*f) (void *);
    }	my_struct;
     
    my_struct info[] = 
    {
      {'d', option_d},
      {'u', option_u},
    {0,0}
    };
     
    int  search(char *str, ...)
    {
     va_list	ap;
      char	*f;
      va_start(ap, str);
      for (f = str; *f; f++)
        {
          if (*f == '%')
    	{
    	  *++f;
    // je bloque ici je ne sait pas lui dire si *f == 'd' alors il execute la fonction se situant dans option_d.c ect.................... je sait qu'il nous faut parcourir notre structure mais comment?
    	} 
          else
    	my_putchar(*f);
        }
      va_end(ap);
    }
    }

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par aimad41
    // je bloque ici je ne sait pas lui dire si *f == 'd' alors il execute la fonction se situant dans option_d.c ect.................... je sait qu'il nous faut parcourir notre structure mais comment?
    Bah, c'est un tableau de structure... Tu le parcours en testant les éléments qui t'intéressent. Quand tu l'as trouvé, tu lis le ou les éléments de la structure courante....

    Un pointeur local évite d'écrire du code gore...

    Fait de ton mieux et poste ton code si tu as un problème, mais à part de cette ignoble fonction variadic dont je ne recommande absolument pas l'usage. Si le problème à résoudre est clairement défini, une union introduit certes un degré de souplesse, mais est beaucoup plus déterministe.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Citation Envoyé par aimad41
    bonsoir,

    voila mon probleme ce soir et que je n'arrive pas a etablir une liaison entre ma structures et le reste de ma fonction du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    typedef struct fonction{
      char	c;
      int (*f) (void *);
    }	my_struct;
     
    my_struct info[] = 
    {
      {'d', option_d},
      {'u', option_u},
    {0,0}
    };
     
    int  search(char *str, ...)
    {
     va_list	ap;
      char	*f;
      va_start(ap, str);
      for (f = str; *f; f++)
        {
          if (*f == '%')
    	{
    	  *++f;
    // je bloque ici je ne sait pas lui dire si *f == 'd' alors il execute la fonction se situant dans option_d.c ect.................... je sait qu'il nous faut parcourir notre structure mais comment?
    	  int k;
    	  const my_struct * the_struct;
    	  for (k = 0, the_struct = NULL; the_struct == NULL && info[k].c != 0; k++)
    	  {
    	    if (info[k].c == *f)
    	    {
    	      the_struct = info + k;
    	    }
    	  }
     
    	  if (the_struct != NULL)
    	  {
    	    the_struct->f(NULL /* ton paramètre */);
    	  }
    	} 
          else
    	my_putchar(*f);
        }
      va_end(ap);
    }
    }

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Points : 77
    Points
    77
    Par défaut ok
    merci j'ai compris, j'ai enfin reussit, je vais maintenant m'entrainer avec les unions ..
    c'est quoi le truc qui te gene avec les va_args?

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par aimad41
    c'est quoi le truc qui te gene avec les va_args?
    Ca fait des fonctions qui ne contrôlent pas leurs paramètres.
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre du Club Avatar de Stevie Wonder
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Points : 55
    Points
    55
    Par défaut
    my_printf made in epitech c'est ca ?

Discussions similaires

  1. Structure et pointeur de fonction
    Par philippe13 dans le forum Débuter
    Réponses: 12
    Dernier message: 03/11/2009, 19h01
  2. Déclaration de pointeur de fonction et structure
    Par ShaiLeTroll dans le forum Delphi
    Réponses: 28
    Dernier message: 05/04/2007, 10h48
  3. Réponses: 9
    Dernier message: 14/01/2007, 16h40
  4. Structure, pointeur et fonction...
    Par Linaa dans le forum C
    Réponses: 15
    Dernier message: 04/12/2005, 13h12
  5. Pointeur de fonction et structure
    Par Trunks dans le forum C
    Réponses: 6
    Dernier message: 07/10/2005, 00h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo