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 :

Contenu d'une structure C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Par défaut Contenu d'une structure C
    Bonjour,
    j'ai une structure cend ou sont stockés differents résultats, j'aimerai lister le contenu de cette structure dans un fichier.
    je fais une boucle pour afficher tous les élements de la structure, mais il m'affiche 4 valeurs: 0 52029128 0 0
    Alors que le taille de la structure est 256.
    vous pouvez m'aider svp.
    Voila le 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #define CONTROLSTACKSIZE 256 
    struct control *control[CONTROLSTACKSIZE];
    struct control *cend[CONTROLSTACKSIZE];
    int stackp = 0;
    
    cp_evloop(char *string)
    {
        wordlist *wlist, *ww;
        struct control *x;
        char *i;
        int nn;
    	FILE * pFile;
    	int c;
    
    if (cend[stackp] && (cend[stackp]->co_type != CO_UNFILLED)) {
    	    cend[stackp]->co_next = alloc(struct control);
    	    ZERO(cend[stackp]->co_next, struct control);
    	    cend[stackp]->co_next->co_prev = cend[stackp];
    	    cend[stackp]->co_next->co_parent = cend[stackp]->co_parent;
    	    cend[stackp] = cend[stackp]->co_next;
    	} else if (!cend[stackp]) {
    	    control[stackp] = cend[stackp] = alloc(struct control);
    	    ZERO(cend[stackp], struct control);
    	}
    	if (eq(wlist->wl_word, "if")) {
    	    cend[stackp]->co_type = CO_IF;
    	    cend[stackp]->co_cond = wl_copy(wlist->wl_next); /* va, wl_copy */
    
    		if (!cend[stackp]->co_cond) {
    		fprintf(stderr, 
    			"Error: missing if condition.\n");
    	    }
    		
    		 pFile = fopen ("file.txt","w+");
    		  if (pFile!=NULL)
    		  {
    			for (c=0;c< sizeof(cend[stackp]);c++)
    			fprintf(pFile,"%d\n", cend[c]);
    			
    			fclose (pFile);
    			  } 
    		  }
    		
    	    newblock;
    Merci

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (c=0;c< sizeof(cend[stackp]);c++)
    cend[stackp]est un struct control * et sizeof(cend[stackp]) donne la taille d'un pointeur ce qui n'est certainement pas ce qui est attendu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(pFile,"%d\n", cend[c]);
    cend[c] est un struct control * et non pas un int comme pourrait le faire espérer le %d. Ceci affichera l'adresse d'une struct control. Si on veut afficher les éléments d'une structure, il faut afficher les différents champs les uns après les autres.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Par défaut
    Peux-tu stp me donner un exemple, afin de pouvoir lister le contenu de cend dans mon fichier.

    voila le code de la struct control
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct control {
        int co_type;           
        wordlist *co_cond;      /* if, while, dowhile */
        char *co_foreachvar;        /* foreach */
        int co_numtimes;        /* repeat, break & continue levels */
        int co_timestodo;       /* the number of times left during a repeat loop */
        wordlist *co_text;      /* Ordinary text and foreach values. */
        struct control *co_parent;  /* If this is inside a block. */
        struct control *co_children;    /* The contents of this block. */
        struct control *co_elseblock;   /* For if-then-else. */
        struct control *co_next;
        struct control *co_prev;
    } ;
    Merci d'avance

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fprintf(pFile, "%d\n", myStructControl.co_type);
    etc pour chaque champ

    puisqu'il n'y a pas de moyen de lister les champs, tu n'as d'autres solutions que de le faire à la main
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Par défaut
    Merci pour la réponse,
    Ok je vais essayer comme ça.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 34
    Par défaut
    J'ai une autre question svp,par exemple dans ma structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct control {
        int co_type;           
        wordlist *co_cond;      /* if, while, dowhile */
        char *co_foreachvar;        /* foreach */
        int co_numtimes;        /* repeat, break & continue levels */
        int co_timestodo;       /* the number of times left during a repeat loop */
        wordlist *co_text;      /* Ordinary text and foreach values. */
        struct control *co_parent;  /* If this is inside a block. */
        struct control *co_children;    /* The contents of this block. */
        struct control *co_elseblock;   /* For if-then-else. */
        struct control *co_next;
        struct control *co_prev;
    } ;
    comment je pourrai accéder à la valeur de co_cond qui appartient à une autre structure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct wordlist {
        char *wl_word;
        struct wordlist *wl_next;
        struct wordlist *wl_prev;
    } ;
    Merci d'avance

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

Discussions similaires

  1. Afficher le contenu d'une structure dans une figure
    Par rhedouin dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 25/04/2013, 12h08
  2. Réponses: 6
    Dernier message: 17/01/2011, 08h43
  3. Réponses: 4
    Dernier message: 17/01/2008, 23h50
  4. Réponses: 2
    Dernier message: 30/11/2007, 13h14
  5. Récuperer structure et contenu d'une base
    Par nero dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 24/06/2004, 17h34

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