[LCP] tdc06_ex13

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

[LCP] tdc06_ex13

Message  Sanghren le Mar 29 Oct 2013, 10:44

Bonjour ,

je suis actuellement entrain d'essayer de faire l'exercice 13 du td C 06 et je bloque .

Je parviens , je pense , a parcourir et récupérer tous les champs correctement (En vérifiant pour chaque tour de boucle , j'obtiens des valeurs cohérentes pour les différents champs .

Mais voila , mon soucis est pour afficher le xème caractère de la chaine , celui qu'on est censé retrouver ... je n'y arrive pas !

En lieu et place j'obtiens toute une série de signe cabalistique ...

Code:
#include <stdio.h>
#include <stdlib.h>

#include "smb06.h"

int main(void) {

    void * adrMemoire = NULL, * sequenceCourante = NULL ;
    unsigned char * definitType = NULL ; // On va placer dans ce pointeur d'UCHAR la valeur de la première zone . Qui correspond soit à 1/2/3 , définissant le type de la zone suivante .
    char * positionChar = NULL ;
    short * positionShort = NULL ;
    float * positionFloat = NULL ;
    const char * adresseChaine = NULL ;
    int * offset = NULL, * decalageDebutZone = NULL ;
    int positionCharDansChaine ;

    adrMemoire = getTexte05() ;

    decalageDebutZone = (int *) adrMemoire ;
    adrMemoire = ((char *) adrMemoire) + (sizeof(char) * (*decalageDebutZone)) ;


    do {


        sequenceCourante = adrMemoire ;
        definitType = (unsigned char *) adrMemoire ;
        adrMemoire = ((unsigned char*) adrMemoire) + 1 ;

        switch (*definitType) {

        case 1 : positionChar = (char *) adrMemoire ;
        case 10 : adrMemoire = ((char *) adrMemoire) + 1 ; break ;
        case 2 : positionShort = (short *) adrMemoire ;
        case 20 : adrMemoire = ((short *) adrMemoire) + 1 ; break ;
        case 3 : positionFloat = (float *) adrMemoire ;
        case 30 : adrMemoire = ((float *) adrMemoire) + 1 ; break ;

        }

        adresseChaine = (const char *) adrMemoire ;
        adrMemoire = ((char *) adrMemoire) + 4 ;

        switch (*definitType) {

        case 1 : positionCharDansChaine = *positionChar ; break ;
        case 2 : positionCharDansChaine = *positionShort ; break ;
        case 3 : positionCharDansChaine = (int)(*positionFloat) ; break ;

        }

        for (int i = 0 ; i < positionCharDansChaine ; i++) {

            adresseChaine++ ;

        }

        printf ("%c\n", *adresseChaine) ;
        offset = (int *) adrMemoire ;
        sequenceCourante = ((char *) sequenceCourante) + (*offset) ;
        adrMemoire = sequenceCourante ;

   } while (*offset != 0) ;

    printf ("\n") ;

    return 0;

}
Je n'arrive pas à voir où j'ai fait une erreur : /


Sanghren

Nombre de messages : 3
Age : 24
Prénom : Tristan
Statut : Etudiant en 1ere Réseau
Date d'inscription : 21/10/2011

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