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 :

liste en C qui ne marche pas.


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut liste en C qui ne marche pas.
    Bonjour,

    je souhaite utiliser les fonctions disponibles ici :
    http://nicolasj.developpez.com/articles/listesimple/
    Mes data à moi sont une structure qui ne contient qu'un élément, un char *.
    En simplifiant, j'ai fait ça, mais ça bug :
    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
    #include <stdio.h>
    #include <string.h>
    #include "single_linked_lists.h"
     
    typedef struct {
    char name[50];
    } name_s;
     
     
    int insert(sll_s *p_sll)
    {
    	name_s nom;
    	name_s *p_nom = &nom;
            p_nom->name="Jean";
    	sll_insert (p_sll, p_nom);
    	return 0;
    }
     
    int main()
    {
    	sll_s *p_sll = NULL;
    	p_sll = sll_new ();
    	insert(p_sll) ;
    	printf ("%s\n", (char*) sll_data (p_sll));
    }

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Hou ! que cela à l'air compliqué comme code !!!

    Tu as au moins une erreur ici :
    remplacer :
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(p_nom->name, "Jean");
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut
    Oui ça marche mieux, ça compile maintenant.
    Mais %s semble être vide, car seul une nouvelle ligne est affichée.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut
    En fait, pour faire simple, je ne sais pas comment accéder à un élément d'une liste qui a été implémentée dans le cours que j'ai cité.
    Ma liste p_sll à moi contient des name_s*.
    Je pense donc qu'il faut utiliser (name_s *)sll_data (p_sll) pour accéder à ma structure, puis (name_s *)sll_data (p_sll) -> name pour accéder au nom. Mais j'ai des erreurs de type.
    Pouvez-vous m'aider ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut
    Bon, je pense que j'ai un peu amélioré, car sa compile, mais ça n'affiche toujours pas le nom :
    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
     
    #include <stdio.h>
    #include <string.h>
    #include "single_linked_lists.h"
     
    typedef struct {
    char name[50];
    } name_s;
     
     
    int insert(sll_s *p_sll)
    {
    	name_s nom;
    	name_s *p_nom = &nom;
            strcpy(p_nom->name, "Jean");
    	sll_insert (p_sll, p_nom);
    	return 0;
    }
     
    int main()
    {
    	sll_s *p_sll = NULL;
    	p_sll = sll_new ();
    	insert(p_sll) ;
    	printf ("%s\n", ((name_s *)sll_data (p_sll))->name);
    }

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    ERREUR: Tu ajoutes l'adresse d'une variable locale à une liste chaînée.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 16
    Dernier message: 25/03/2010, 10h09
  2. Réponses: 1
    Dernier message: 09/05/2009, 02h12
  3. Iptables configuration qui ne marche pas....
    Par The_Nail dans le forum Sécurité
    Réponses: 7
    Dernier message: 03/02/2004, 14h27
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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