[C] Question interro 2005 A

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

[C] Question interro 2005 A

Message  psycho le Lun 19 Nov 2007, 18:33

Salut à tous,

dans cette énoncé il est demander de tracer des 'balises' dans la mémoire.

la mémoire est organisé de facon suivante:

- la fonction getbalise nous donne l'adresse de la première balise
les balises sont des structures (unsigned int x, y; unsigned char num)
- les balises sont suivis de l'offset de la prochaine balise.

j'arrive à récupérer la première balise (facile avec la fonction getBalise Very Happy), mais je n'arrive pas à récupérer la balise suivant.

j'ai tester plusieurs trucs du genre:

Code:

- balise + sizeof(int) + sizeof(int) + sizeof(char);
- balise + sizeof(Balise);

mais ca ne marche pas.

Est-ce que quelqu'un pourais m'aider svp ?

psycho

Nombre de messages : 156
Age : 32
Prénom : Ahmet
Statut : Ancien de gestion
Localisation : Machelen
Date d'inscription : 18/01/2007

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  momo le Lun 19 Nov 2007, 19:20

tu dois tenir compte du fait que chaque balise est suivie d'un unsigned short contenant l'offset de la balise suivante, mais surtout du fait que l'offset est un nbre d'octets tjs pris à partir du début de la zone mémoire !!
Bref pour se déplacer plus loin ce que tu fais n'est pas bon, ça devrait plutôt ressembler à ça : (à adapter un minimum )

Code:
balise++;
balise = (Balise*)(offset_depart + *(unsigned short *) balise);

restera à faire les tests Smile pour arrêter la fonction quand il n'y a plus de balise valide

momo

Nombre de messages : 86
Age : 30
Prénom : Morgan
Statut : Etd, 3èG
Localisation : Uccle
Date d'inscription : 06/11/2006

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  psycho le Lun 19 Nov 2007, 20:22

merci je vais voir ca Wink

psycho

Nombre de messages : 156
Age : 32
Prénom : Ahmet
Statut : Ancien de gestion
Localisation : Machelen
Date d'inscription : 18/01/2007

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  erka le Lun 19 Nov 2007, 21:26

y a aussi le fait que ta en mémoire une struct balise et un unsigned short... tu dois peut etre faire un cast et incrémenter de un ... pour te simplifier la vie à la place de faire
Code:
balise + sizeof(int) + sizeof(int) + sizeof(char);

comme attention tu dois avancer de ton offset relatif à la première adresse... moi je ferais plutot un cast du style
Code:
(char*)balise + *(short*)balise
(si je me rappelle bien c'est ce que j'ai fais

erka

Nombre de messages : 495
Age : 29
Prénom : Julian
Statut : ancien reseaux
Localisation : Charleroi
Date d'inscription : 23/10/2006

http://www.vanden.be

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  Iorek le Lun 19 Nov 2007, 21:30

À noter par rapport à l'exemple du dessus (de momo) que si ta valeur offset_depart est lui-même un pointeur (y a des chances) il faut le caster ...

J'avais pensé utiliser (int) offset_depart pour prendre sa valeur numérique, mais j'ai cru comprendre qu'il vallait mieux utiliser (char *) ...

Enfin j'suis pas sur. Si quelqu'un pouvait m'éclairer sur ce point ? =)

Iorek

Nombre de messages : 198
Age : 31
Prénom : Fabian
Statut : etd 3 ème réseaux
Localisation : Uccle
Date d'inscription : 03/11/2006

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  erka le Lun 19 Nov 2007, 22:16

je pense avoir utilisé un char* mais je ne suis plus sur j'irais voir dans mes sources demain... la je vais dormir trop crevé ... mais je suis presque sur que j'ai utilisé un char*

erka

Nombre de messages : 495
Age : 29
Prénom : Julian
Statut : ancien reseaux
Localisation : Charleroi
Date d'inscription : 23/10/2006

http://www.vanden.be

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  momo le Lun 19 Nov 2007, 22:36

effectivement c'est un char * également chez moi : Wink

momo

Nombre de messages : 86
Age : 30
Prénom : Morgan
Statut : Etd, 3èG
Localisation : Uccle
Date d'inscription : 06/11/2006

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  psycho le Lun 19 Nov 2007, 23:38

ok j'ai fais avec un char * aussi.

merci pour l'aide Wink

psycho

Nombre de messages : 156
Age : 32
Prénom : Ahmet
Statut : Ancien de gestion
Localisation : Machelen
Date d'inscription : 18/01/2007

Revenir en haut Aller en bas

Re: [C] Question interro 2005 A

Message  Contenu sponsorisé Aujourd'hui à 21:03


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