Menu

Lecture incorrecte d'une valeur

Messages postés
17
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
11 avril 2019
- - Dernière réponse : [Dal]
Messages postés
5047
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
16 avril 2019
- 12 avril 2019 à 09:35
Bonjour, ci dessus une partie de mon programme, mon programme marche quand je fais
   printf("donnez la valeur à insérer \n");
    scanf("%d",&V);
     printf("donnez la position \n");
    scanf("%d",&pos);

avant
creer_liste_bi(&tete,N);

mais ne marche pas quand je fais le contraire.
c'est très bizarre et je n'arrive pas a trouver une explication logique
PS: je n'arrive pas a trouver un bon titre a mon poste vu que je ne connais le problème veuillez m'excuser et m'en proposer un S.V.P
void creer_liste_bi(maillon **tete,int N)
{   int i;
    maillon *P,*Q;
    *tete=NULL;
    for(i=0;i<N;i++)
    {
        P=allouer();
        printf("donnez la val\n");
        scanf("%d",&(P->val));
        if(*tete==NULL)
            *tete=P;
        else
        {
           aff_adr_D(Q,P);
           aff_adr_G(P,Q);
        }
        Q=P;
    }
    aff_adr_G(tete,NULL);
    aff_adr_D(P,NULL);
}
int main()
{   int N,pos,V;
    maillon *P,*tete;
    printf("donnez la longueur de la liste\n");
    scanf("%d",&N);
    printf("donnez la valeur a inserer \n");
    scanf("%d",&V);
     printf("donnez la position \n");
    scanf("%d",&pos);
    creer_liste_bi(&tete,N);
    printf("voici la position %d \n",pos);
    printf("voici la valeur %d\n",V);
    inserer_pos(&tete,V,pos,N);
    P=tete;
    while(P!=NULL)
    {
        printf("%d",valeur(P));
        P=suivant(P);
    }
    return 0;
}



Configuration: Windows / Chrome 73.0.3683.103
Afficher la suite 

Votre réponse

2 réponses

Messages postés
17
Date d'inscription
vendredi 22 mars 2019
Statut
Membre
Dernière intervention
11 avril 2019
0
Merci
voila ce qui se passe exactement
il me dit que pos=0 ce qui n'est pas le cas
et insère ma valeur en deuxième position (c'est toujours comme ça
quelque soit la valeur de pos)
Commenter la réponse de marie12_2000
Messages postés
399
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
12 avril 2019
62
0
Merci
Bonjour,

On est ici dans un cas de corruption de mémoire.
Je n'ai pas vu le code de
aff_adr_G()
mais ligne 19 j'écrirais plutôt
aff_adr_G(*tete,NULL);
.
[Dal]
Messages postés
5047
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
16 avril 2019
929 -
Sur la capture on voit d'ailleurs un warning du compilateur, qui se plaint que le premier argument passé à
aff_adr_G()
a un type pointeur incompatible avec le prototype définit pour cette fonction.
Commenter la réponse de Dalfab