[C] TD6 Ex17

Voir le sujet précédent Voir le sujet suivant Aller en bas

[C] TD6 Ex17

Message  Terminatour le Sam 20 Nov 2010, 15:57

Bonsoir bonsoir,

J'aurai une question concernant le TD6 de C.
En réalité je ne comprends pas comment, à la lecture de ceci:
- l'adresse de la séquence suivante (void *) ou NULL pour indiquer la fin.
modifier mon pointeur vers la nouvelle séquence d'information.
Je suis au stade ou mon pointeur se trouve juste devant la zone mémoire contenant l'adresse en question.

J'avais supposé ceci comme assignation:
texteInfo = & (* texteInfo); cela ne compile pas (invalid type argument of unary '*' (have 'unsigned int'))
alors j'avais pensé à convertir mon pointeur en char avant de récupérér son contenu (son contenu qui est une adresse):
texteInfo = & (* ((char *)texteInfo)); cela compile mais mon programme plante.

Une petite idée Twisted Evil

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  smb le Sam 20 Nov 2010, 16:36

Terminatour a écrit:
(...)
Une petite idée Twisted Evil

La petite idée c'est d'écouter plus attentivement au laboratoire quand j'explique quelque chose !


En supposant que void * pcur est le pointeur courant vers une information dans la séquence, information dont le type est par généralité type, pour prendre cette information, il faut faire:

* ( type * ) pcur

Pour un cas concret, remplace type par le type de l'information et le tour est joué !

Rolling Eyes

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  Terminatour le Dim 21 Nov 2010, 12:01

çà me revient maintenant !
Oui je ferai plus attention la prochaine fois, promis. Embarassed

Il me reste un petit soucis cependant.
Quelque chose d'assez curieux, j'ai même été voir le code d'un camarade, on fait identiquement la même chose (sauf peut-être le nom de variables, bref passons) mais lors de la première récupération de valeurs.
Chez moi mon programme se plante.
J'ai été vérifié sur le fora d'avoir la bonne version des librairies mais rien n'y fait !

Alors pour simplifiez pour accéder à la première valeur d'information il faut:
Code:
char * texte;
void * texteInfo;
InfoMorceau * tabInfo;
int nombre = 0;
tabInfo = NULL;
texteInfo = getTexte06(&texte);
texteInfo = * (void **)texteInfo;
tabInfo = realloc(tabInfo, sizeof(InfoMorceau) * (nombre+1));
tabInfo[nombre].pos = *(UCHAR *)texteInfo;

Voilà et çà il veut pas, j'ai repris le code d'un amis qui marchait et il ne marche pas chez moi non plus !
Curieux non ?

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  smb le Dim 21 Nov 2010, 15:22

Je ne vois pas trop bien ce que vient faire ton tableau dynamique d' InfoMorceau (à moins que InfoMorceau soit une struct personnelle différente de l'EX14). Bon, passons.
Par contre, si tu veux utiliser realloc avec tabInfo comme 1ier argument, tu as intérêt à ce que tabInfo ait été initialisé à 0 !
Ne serait-ce pas ça la différence entre le code de ton copain et le tien ?

Rolling Eyes

[édité: Oops, je viens de voir que tu as bien mis tabInfo à 0 ! Embarassed ]

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  smb le Dim 21 Nov 2010, 16:00

En fait, je viens de tester ton code tel quel : il ne plante pas !
(avec InfoMorceau de EX14)

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  Terminatour le Dim 21 Nov 2010, 16:31

non c'est une structure de ma composition, je vous la joint:
Code:
typedef struct {
   UCHAR pos;
   UCHAR lg;
   USHORT offset;
} InfoMorceau;

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  smb le Dim 21 Nov 2010, 16:54

Même avec InfoMorceau de ta composition, pas de plantage chez moi.
J'affiche (*) la position et ça me donne à chaque exécution une position correcte.

(*) printf("%u\n",(unsigned)tabInfo[nombre].pos);

Question

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  Terminatour le Dim 21 Nov 2010, 18:13

bigre ...
Et bien je testerai çà à l'ESI, pour constater un éventuel changement ...

Merci pour votre intervention

Terminatour

Nombre de messages : 344
Age : 25
Prénom : Louis-Julien
Statut : statutaire
Localisation : localisée
Date d'inscription : 04/10/2009

Revenir en haut Aller en bas

Re: [C] TD6 Ex17

Message  Contenu sponsorisé Aujourd'hui à 14:47


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum