Lecture incorrecte d'une valeur

Fermé
marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020 - 11 avril 2019 à 13:54
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 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
A voir également:

2 réponses

marie12_2000 Messages postés 27 Date d'inscription vendredi 22 mars 2019 Statut Membre Dernière intervention 29 février 2020
11 avril 2019 à 13:59
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)
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
12 avril 2019 à 08:24
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);
.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
Modifié le 12 avril 2019 à 09:36
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.
0