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 :

fct get first d'une liste_chainé


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 3
    Par défaut fct get first d'une liste_chainé
    slt,
    je fais un programme sur les liste chainé lors d'execution ce message apparait:
    Unhandled exception at 0x01303aeb in liste.exe: 0xC0000005: Access violation reading location 0x00000008.
    voila le prog:
    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
    46
    47
    typedef struct _Dliste {
    	struct _Dliste *next;
    	struct _Dliste *prev;
    	void * info;
    }Dliste;
     
    Dliste* get_first(Dliste* ref)
    {
    	if(ref==NULL)
    		return NULL;
    	while(ref->prev!=NULL)
    		ref=ref->prev;
    		ref->next=ref;
    	return ref;
    }
     
    main()
    {
    	int a,b,c,d;
    	Dliste* trouve;
    	Dliste*ref=NULL;
    	a=1;
    	b=2;
    	c=3;
    	d=4;
    	ref=node_create(a);
    	printf("%d\n",ref->info);
    	add_tail(ref, b);
    	add_tail(ref, c);
    	add_tail(ref, d);
     
     
     
    	printf("b=%d\n",ref->info);
    	if(ref==NULL)
    		printf("faux");
    		while(ref!=NULL)
    		{
    			printf("%d\n",ref->info);
    			ref=ref->next;
    		}
    	trouve = get_first(ref);
    	printf("trouve= %d\n",((int)trouve->info));
     
    	system("PAUSE");
     
    }
    merci

  2. #2
    Membre Expert Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Par défaut
    Utilise la balise CODE pour rendre ton message lisible !!

    Sans meme regarder le code : l'erreur dit que tu es en train d'utiliser un pointeur nul.

    Rien a voir avec le bug :
    Dans get_first : ref->next=ref; je crois que tu es en train de casser ta chaine, là !!!

    Dans ton main, le code est "dangereux". Tu devrais garder "ref" comme pointeur sur le 1er element de la chaine et ne jamais y toucher. Et utiliser un autre pointeur pour te balader dans la liste. Bon ok, avec cette méthode, get_first ne sert plus a rien.

    Le bug : je pense que c'est l'accès à void * info; qui pète. Es-tu sûre que c'est le printf après get_first qui pète et pas celui d'avant ?

Discussions similaires

  1. [2.x] Bonne pratique : get complexe depuis une entity
    Par Sergei75 dans le forum Symfony
    Réponses: 7
    Dernier message: 29/11/2011, 18h37
  2. [Bean] Faire facilement un get/set d'une propriété
    Par dingoth dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 20/10/2009, 10h39
  3. Problèmes sur Get Set d'une variable.
    Par Mattk dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/04/2007, 01h43
  4. Réponses: 7
    Dernier message: 13/03/2006, 15h39
  5. [debutant] get image avec une variable non static
    Par laguna dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2006, 15h57

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