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

kij_82 Messages postés 4260 Statut Contributeur 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
Driveloc
 
trés clair, merci à toi!!!
0
_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