Aide en language C.

Driveloc -  
 _FrenzY_ -
Bonjour,

Es qe QQun pourrai me donner un coud de main s'il vous plaît, je ne comprend pas cette opération(language C)

gspiinfo est une structure, et iodata une variable de cette même structure

voici comment iodata est déclaré dans la structure gspiinfo:

unsigned char *iodata;

Je n'arrive pas à comprendre ceci
if (gspiinfo->iodata)

merci pour votre aide

3 réponses

  1. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    gspiinfo est une structure comme tu le dis si bien.
    A l'intérieur de cette structure, la variable iodata est déclarée en tant que pointeur sur caractère, ce qui signifie qu'il s'agit en fait d'une chaine de caractère.

    Lorsque tu as l'instruction suivante :
    gspiinfo->iodata
    


    Cela permet d'accéder à la variable iodata de la structure gspiinfo. Note qu'ici, gspiinfo est une variable de type STRUCT gspiinfo.
    Pour moi t'embrouiller l'esprit il faudrait renommer correctement tes variable pour ne pas les appeler de la même manière que tes structures.

    Exemple :
    typedef struct gspiinfo {
          unsigned char *iodata;
    };
    
    // Dans ton code C tu aura par exemple :
    struct gspiinfo maStructure = malloc.... ; // allocation mémoire de la structure
    maStructure->iodata = malloc.... ; // allocation méméoire du champ iodata
    
    // --- Remplissage de la structure :
    Unsigned char *machaine = "coucou je suis là";
    maStructure->iodata = machaine;
    

    0
  2. _FrenzY_
     
    Oh non kij_82, tu ne peux pas montrer ça à un débutant...

    // Dans ton code C tu aura par exemple :
    struct gspiinfo maStructure = malloc.... ; // allocation mémoire de la structure
    maStructure->iodata = malloc.... ; // allocation méméoire du champ iodata

    La flèche '->' ne peut être utilisée que pour appeler un membre d'un pointeur sur une structure ( sans parler de l'allocation mémoire 'manuelle' malloc... ), et donc tu aurais dû plutôt déclarer gspiinfo de la manière suivante :

    // Dans ton code C tu aura par exemple :
    struct gspiinfo * maStructure = malloc.... ; // allocation mémoire de la structure


    ------

    Appel d'un membre :

    d'un pointeur : '->'
    sinon : '.'
    0