IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Pointeur sur une structure


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut Pointeur sur une structure
    Bonsoir à tous et a toutes ;



    J'ai une structure et je souhaite afficher a l'écran les caractére hexadecimaux qui sy' trouvent .


    MAIN.H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    typedef struct Fred
     
    *bytes [0x200]=
     
                     {
                    ,0x50,0xAC,0xBB,0xD8,0x26,0x3B
    		,0x20,0x15,0xE1,0x76,0x3F, 0xE9
    		,0x1A,0xA9,0x57,0x22,0xDA,0x22
                     };

    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main ( int *bytes )
     
    {
     
    struct Fred = &bytes;
     
     printf   (" 1 ére ligne est : %d\n",&bytes);
    // ça doit afficher  ,0x50,0xAC,0xBB,0xD8,0x26,0x3B à l'écran 
    printf ("la deuxiéme ligne est :  %d\n",&bytes);
    // ça doit afficher ,0x20,0x15,0xE1,0x76,0x3F, 0xE9 à l'écran 
    printf ("la 3 éme  ligne est :  %d\n",&bytes);
    // // ça doit afficher   ,0x1A,0xA9,0x57,0x22,0xDA,0x22
     
     
    retrun ;
     
    }

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Bonsoir à tous et a toutes ;



    J'ai une structure et je souhaite afficher a l'écran les caractére hexadecimaux qui sy' trouvent .


    MAIN.H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    typedef struct Fred
     
    bytes [0x200]=
     
                     {
                    ,0x50,0xAC,0xBB,0xD8,0x26,0x3B
    		,0x20,0x15,0xE1,0x76,0x3F, 0xE9
    		,0x1A,0xA9,0x57,0x22,0xDA,0x22
                     };

    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
    int main ( int *bytes )
     
    {
     
    struct Fred = &bytes;
     
     printf   (" 1 ére ligne est : %d\n",&bytes);
    // ça doit afficher  ,0x50,0xAC,0xBB,0xD8,0x26,0x3B à l'écran 
    printf ("la deuxiéme ligne est :  %d\n",&bytes);
    // ça doit afficher ,0x20,0x15,0xE1,0x76,0x3F, 0xE9 à l'écran 
    printf ("la 3 éme  ligne est :  %d\n",&bytes);
    // // ça doit afficher   ,0x1A,0xA9,0x57,0x22,0xDA,0x22
     
     
    retrun ;
     
    }
    Je pige rien à ta définition de ta structure dénommée "struct Fred" et à l'argument "int *bytes" de ton main(). Par ailleurs, si "bytes" est un "int étoile", alors "&bytes" est un "int étoile étoile" donc je vois mal comment tu peux copier cet "int étoile étoile" dans un "struct Fred".

    Sinon ça n'a rien à voir mais le premier argument de "main" est normalisé au type "int" et non "int étoile".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Bonsoir Sve@r;

    bytes dans la structure contient des caractéres héxadecimaux et je souhaite
    afficher chaque ligne à l'écran par &bytes .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    *bytes = [0x200] 
     
     
      {
                    ,0x50,0xAC,0xBB,0xD8,0x26,0x3B
    		,0x20,0x15,0xE1,0x76,0x3F, 0xE9
    		,0x1A,0xA9,0x57,0x22,0xDA,0x22
                     };


    Ensuite , a l'éran on lira chaque ligne de la structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    int main ( int *bytes )
     
    {
     
    struct Fred = &bytes;
     
     printf   (" 1 ére ligne est : %d\n",&bytes);
    // ça doit afficher  ,0x50,0xAC,0xBB,0xD8,0x26,0x3B à l'écran 
    printf ("la deuxiéme ligne est :  %d\n",&bytes);
    // ça doit afficher ,0x20,0x15,0xE1,0x76,0x3F, 0xE9 à l'écran 
    printf ("la 3 éme  ligne est :  %d\n",&bytes);
    // // ça doit afficher   ,0x1A,0xA9,0x57,0x22,0xDA,0x22
     
     
    retrun ;
     
    }

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Bonsoir Sve@r;

    bytes dans la structure contient des caractéres héxadecimaux et je souhaite
    afficher chaque ligne à l'écran par &bytes .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    *bytes = [0x200] 
     
     
      {
                    ,0x50,0xAC,0xBB,0xD8,0x26,0x3B
    		,0x20,0x15,0xE1,0x76,0x3F, 0xE9
    		,0x1A,0xA9,0x57,0x22,0xDA,0x22
                    };

    C'est toujours pas clair. Déjà, une structure s'écrit ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct <éventuellement nom_de_structure> {
        type variable;
        type tableau[];
        type *pointeur;
        ...
    } <éventuellement nom de variable de type de cette structure>;
    Par ailleurs, c'est quoi une "ligne" ??? Si c'est 6 valeurs ben dès que t'as affiché tes 6 valeurs dans ta boucle t'affiches un '\n'...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Ce code affiche

    la 1ére ligne est : 23ff80
    la deuxiéme ligne est : 23ff80
    la 3 éme ligne est : 23ff80


    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    la 1ére ligne est ,0x50,0xAC,0xBB,0xD8,0x26,0x3B
    la deuxiéme ligne est ,0x20,0x15,0xE1,0x76,0x3F, 0xE9
    la 3 éme ligne est ,0x1A,0xA9,0x57,0x22,0xDA,0x22

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Ce code affiche

    la 1ére ligne est : 23ff80
    la deuxiéme ligne est : 23ff80
    la 3 éme ligne est : 23ff80
    Ca c'est tout à fait normal. Déjà, dans le "main.c" je ne vois aucune référence au "main.h". Ensuite, ben tu demandes sur 3 lignes à afficher l'adresse de "bytes" donc il t'affiche 3 fois l'adresse de "bytes" qui ne change pas.

    De toute façon il n'y a pas de mystère. Tu as un tableau de 512 chiffres "bytes[0x200]" (ou du moins c'est ce qu'il me semble) donc si tu veux afficher chaque élément de ce tableau, ben il te faut une boucle. Et dans cette boucle, si tu veux que l'affichage se fasse en lignes, il te faut, de temps en temps, afficher '\n'...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Un nouveau code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
     
     
    int main (   )
     
    {
     
     
     printf   (" 1 ere ligne est :%x%c \n",&byte1);
    // ça doit afficher  ,0x50,0xAC,0xBB,0xD8,0x26,0x3B à l'écran
    printf ("la deuxieme ligne est :  %x%c \n",&byte2);
    // ça doit afficher ,0x20,0x15,0xE1,0x76,0x3F, 0xE9 à l'écran
    printf ("la 3 esme  ligne est :  %x%c \n",&byte3);
    // // ça doit afficher   ,0x1A,0xA9,0x57,0x22,0xDA,0x22
     
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #ifndef _MAIN_H_
    #define _MAIN_H_
     
     
     
     
     
     
    *byte1 [50] ={0x50,0xAC,0xBB,0xD8,0x26,0x3B};
    *byte2 [50]={0x20,0x15,0xE1,0x76,0x3F, 0xE9};
    *byte3[50] ={0x1A,0xA9,0x57,0x22,0xDA,0x22};
     
     
    #endif //_MAIN_H_

    As tu un exemple concrét pour ce cas ?

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Des améliorations apportées au code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
     
     
    int main ()
     
    {
     
    printf ("la 1ere  ligne est : %02X  \n",byte1);
    printf ("la 2eme  ligne est : %02X \n",byte2);
    printf ("la 3eme  ligne est : %02X \n",byte3);
     
     
    }

    Qui donne un trés bon résultat , le comble c'est qui affiche juste le début du premier octet de chaque ligne .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    La 1ére ligne est bien : 50
    La 2éme ligne est bien : 20
    La 3éme ligne est bien : 1A



    Qui doit afficher en principe toute la ligne .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    la 1ére ligne est ,0x50,0xAC,0xBB,0xD8,0x26,0x3B
    la deuxiéme ligne est ,0x20,0x15,0xE1,0x76,0x3F, 0xE9
    la 3éme ligne est ,0x1A,0xA9,0x57,0x22,0xDA,0x22


    Merci pour vos conseils .

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Des améliorations apportées au code :
    Peux-tu préciser le contenu de main.h, parce que ceci ne compile pas.

  10. #10
    Membre chevronné Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par défaut
    Tu confonds 2 choses dans ton exemple :
    - la représentation visuelle de ta structure dans ton éditeur
    - la représentation logique.

    En mémoire, tu as des nombres, ils ne sont pas séparé par des virgules. printf n'a aucune raison d'afficher des virgules qui n'existent pas.

    De plus tu as demandé a printf d'afficher un nombre hexa sur 2 chiffres, c'est exactement ce qu'il fait, un nombre hexa sur deux chiffres. Si tu veux qu'il affiche plus, tu dois le lui dire. (en mettant plusieurs %02X à la suite, séparé par des virgules si tu veux voir ces dernières).

    Un dernier point, tes nombres sont rassemblé au sein d'un même tableau. Cela présente certains avantages. Mais cela ne permet pas de les manipuler en bloc. Pour effectuer une opération sur l'ensemble des nombres d'un tableau, tu dois répéter cette opération pour chacun des éléments du tableau. Au moyen d'une boucle par exemple.

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    en visitant le site d'Emmanuel Delahaye j'ai pu apporter des améliorations en se basant sur ses articles en programmation en C .

    Don , voici mon nouveau code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
    #include <string.h>
     
    int main (int argc, char *argv[])
    {
       printf ("la 1ere  chaine est : %02X \n",Donnee);
       printf ("la 2eme  chaine est : %02X\n",Donnee);
       printf ("la 3eme  chaine est : %02X% \n",Donnee);
    }
    MAIN.H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #ifndef _MAIN_H_
    #define _MAIN_H_
     
    #ifndef byte
      #define byte unsigned char
    #endif
     
    #ifdef TABLEAU_STRUCTURE
     
    typedef struct
    {
       unsigned char TABLEAU[5];
    }Donnee_t;
     
    #endif // TABLEAU_STRUCTURE
     
    byte Donnee[]={
    0x50,0x50,0xCF,0xDE,0x88,0x11,0xB4,0x1D,0x68,
    0x21,0x2A,0xE9,0xD1,0x4B,0x9B,0x0D,0x49,0x2A,
    0x1B,0x14,0x97,0x12,0xD6,0x27,0x1B,0x12,0x97,
    0x47,0x55,0xF3,0x72,0x89,0x1F,0xBE,0x21,0x33,
    0x7B,0xE2,0xD3,0xDA,0x37,0x71,0xFB,0x5B,0xE2,
    };
     
    #endif //_MAIN_H_
    Le but et de lire chaque ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf ( la premiére ligne est : %02X , donnee);
    printf (la deuxiéme ligne est : %02X , donnee);
    Ce code affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    la premiére ligne est 402000
    la deixueme ligne est 402000
    Alors que je m'attendais a ce qu'il affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     la premiere ligne est 50 50 CF DE 88 11 B4 1D 68
     la deuxieme ligne est  21 2A  E9  D1  4B 9B 0D  49 2A

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    en visitant le site d'Emmanuel Delahaye j'ai pu apporter des améliorations en se basant sur ses articles en programmation en C .
    MAIN.H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #ifndef _MAIN_H_
    #define _MAIN_H_
     
    <...>
     
    byte Donnee[]={
    0x50,0x50,0xCF,0xDE,0x88,0x11,0xB4,0x1D,0x68,
    0x21,0x2A,0xE9,0xD1,0x4B,0x9B,0x0D,0x49,0x2A,
    0x1B,0x14,0x97,0x12,0xD6,0x27,0x1B,0x12,0x97,
    0x47,0x55,0xF3,0x72,0x89,0x1F,0xBE,0x21,0x33,
    0x7B,0xE2,0xD3,0xDA,0x37,0x71,0xFB,0x5B,0xE2,
    };
     
    #endif //_MAIN_H_
    Le but et de lire chaque ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf ( la premiére ligne est : %02X , donnee);
    printf (la deuxiéme ligne est : %02X , donnee);
    Ce code affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    la premiére ligne est 402000
    la deixueme ligne est 402000
    Alors que je m'attendais a ce qu'il affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     la premiere ligne est 50 50 CF DE 88 11 B4 1D 68
     la deuxieme ligne est  21 2A  E9  D1  4B 9B 0D  49 2A
    J'aimerais savoir où, sur mon site, il est écrit que l'on a le droit d'utiliser _ pour commencer un identificateur ou que l'on peut mettre des définitions de données dans un .h.

    http://emmanuel-delahaye.developpez....htm#id_reserve
    http://emmanuel-delahaye.developpez....nom_underscore

    http://emmanuel-delahaye.developpez....ganiser_source
    http://emmanuel-delahaye.developpez.....htm#organiser

    Tu as déjà posé ce problème sur différents forums et on t'a à chaque fois répondu la même chose. Il n'y a pas de format pour printf() qui permette d'afficher un tableau d'entier d'un seul coup, tout simplement, parce qu'il y a différentes façons d'afficher un tableau. C'est donc à toi de le faire toi même avec une boucle et selon le format que tu as défini au préalable.

    Si tu trouves ça compliqué, tu écris ta fonction une bonne fois pour toutes et on en parle plus.

    Evite les lignes blanches inutiles et n'oublie pas les balises de code, comme indiqué dans les règles du forum...

  13. #13
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    :code:

    Qu'est ce qui te fait croire que tu peux afficher toute une ligne avec un seule appel à printf()? Ceci devrait faire ce que tu veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    #ifndef byte
    #define byte unsigned char
    #endif
     
    #define NB_ELEMS(tab) ( sizeof (tab) / sizeof *(tab) )
     
    int main (void)
    {
        size_t i;
        size_t j;
        byte Donnee[][9]=
        {
            {0x50,0x50,0xCF,0xDE,0x88,0x11,0xB4,0x1D,0x68},
            {0x21,0x2A,0xE9,0xD1,0x4B,0x9B,0x0D,0x49,0x2A},
            {0x1B,0x14,0x97,0x12,0xD6,0x27,0x1B,0x12,0x97},
            {0x47,0x55,0xF3,0x72,0x89,0x1F,0xBE,0x21,0x33},
            {0x7B,0xE2,0xD3,0xDA,0x37,0x71,0xFB,0x5B,0xE2},
        };
     
        for (i = 0; i < NB_ELEMS(Donnee); i++)
        {
            printf("La %d%s chaine est : ", i + 1, (i > 0) ? "eme" : "ere");
            for (j = 0; j <NB_ELEMS(Donnee[0]); j++)
            {
                printf("%02X ", Donnee[i][j]);
            }
            printf("\n");
        }
     
        return 0;
    }
    Il ne te reste plus qu'à construire ta fonction d'affichage à l'aide du code ci-dessus.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  14. #14
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    J'aimerais savoir où, sur mon site,

    Bonjour Emmanuel Delahaye ;


    Je m'éxcuse car ce que je voulais dire c'est que votre site m'as beauoup aidé conçernant le tableau .


    Tout les programmeurs SAVENT trés bien que votre site est trés bien structuré et bien éxpliqué , c'est juste un MALENTENDU .
    Je ne me suis pas inspiré NI DIS que < ___ > était conseillé de l'utiliser sur votre site .
    C'est une INSPIRATION perso , et comme disait Frank.H l'imagination est plus importante que le savoir dixit : A.Einstein .
    Quant à Thierry Chappuis je te remercie non seulement pour ton TEMPS et pour ton intervention sur ce sujet et merci pour le code que tu m'as conseillé je vais l'utiliser et l'améliorer en se basant sur ton exemple Thierry .

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Thierry Chappuis ;

    Le code fonctionne super bien avec 0 (errors) , 0 (Warnings) je te remercie pour ton conseil et ta disponibilité , je voulais savoir si éventuellement sur ce code on pourrais par exemple faire un choix et de choisir la ligne qu'on souhaite afficher , supposant que sur le code y'a 5 lignes et je souhaite afficher la 3 éme

    Pour comprendre on code j'ai ajouté des commentaires et j'éspére que je ne me trompe pas .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
          size_t i; // on créer la variable i pour contenir le nmbre de case du tab 
        size_t j;  // on créer la variable j pour contenir les lignes ajoutée 
     
     
       // on créer une bucle for pour les nbmre d'élements dans le tableau 
        for (i = 0; i < NB_ELEMS(Donnee); i++)
        {
            //j'ai pas compris i + 1, (i > 0) 
            printf("La %d%s chaine est : ", i + 1, (i > 0) ? "eme" : "ere");
            for (j = 0; j <NB_ELEMS(Donnee[0]); j++)
            {
               //on affiche les données par colone [i] et par ligne nbmre de ligne [j]
                printf("%02X ", Donnee[i][j]);
            }
            // ensuite un retour a la ligne pour chaque ligne qu'on ajoute .
            printf("\n");
        }
     
        return 0; // fin de la focntion main 
    }

  16. #16
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Je ne me suis pas inspiré NI DIS que < ___ > était conseillé de l'utiliser sur votre site .
    C'est une INSPIRATION perso
    Ca n'en reste pas moins une erreur.

  17. #17
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Ca n'en reste pas moins une erreur.
    Je m'éxcuse Emmanuel si je me suis trompé ou MAL formulé car j'étais un peu fatigué .

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Par défaut
    fait un menu ...
    selon cas ..
    cas 1 :
    ...
    cas 2 :



    ....
    defaut :


    bonne chance

  19. #19
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Citation Envoyé par Pugebad Voir le message
    fait un menu ...
    selon cas ..
    cas 1 :
    ...
    cas 2 :



    ....
    defaut :


    bonne chance


    Merci pugebad pour ton conseil , mais imagine si tu as 2000 Lignes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            0x50,0x50,0xCF,0xDE,0x88,0x11,0xB4,0x1D,0x68,
            0x21,0x2A,0xE9,0xD1,0x4B,0x9B,0x0D,0x49,0x2A,
            0x1B,0x14,0x97,0x12,0xD6,0x27,0x1B,0x12,0x97,

    T'imagine *2000 ? mettre 2000 fois case ? Non
    La solution a été donnée par Thierry Chappuis c'es de créer une boucle
    for qui va parcourir les cases du tableau [9] et compter chaque ligne ajoutée , cette liste sera numérotée pour chaque ligne ajoutée .

    On a utilisé un size_t pour la taille de la ligne est un sizeof pour ça avec Thierry Chappuis .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #define ELEMENTS_TABLEAU(tab) ( sizeof (tab) / sizeof *(tab) )
     
     size_t i;
     size_t j;
    Ensuite la boucle qui va parcourir les élements du tableau avec leurs tailles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (j = 0; j <ELEMENTS_TABLEAU(Donnee[0]); j++)
            {
                printf("%02X ", Donnee[i][j]);
            }
            printf("\n");

  20. #20
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Bonjour à tous et à toutes ;

    Merci aux gens qui ont contribué , aidé , conseillé , suggéré et intervenu dans ce sujet et qui m'as permis de résoudre ce probléme de pinteur dans une structure .
    Un grand merci aussi à Thierry Chapuis .
    Probléme résolu .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/03/2014, 09h56
  2. Réponses: 2
    Dernier message: 09/03/2014, 23h10
  3. Fuite mémoire pointeur sur une structure bpf_program
    Par maestro_mirou dans le forum Débuter
    Réponses: 10
    Dernier message: 17/03/2012, 08h47
  4. tableau de pointeur sur une structure ?
    Par latitude38 dans le forum C
    Réponses: 8
    Dernier message: 17/01/2011, 18h58
  5. Pointeur sur une structure
    Par youssef222 dans le forum Débuter
    Réponses: 7
    Dernier message: 21/04/2008, 08h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo