Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1877 connectés 

 


Dernière réponse
Sujet : [C] - Tableaux de pointeurs et liste chainees (ENCORE UN PROB)
SquiiiD ha mais oui !!!!!!!!!!!!!!!!!!!!!!!!!!
la bete erreur que j'ai faite  :D  
merci !!!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
SquiiiD ha mais oui !!!!!!!!!!!!!!!!!!!!!!!!!!
la bete erreur que j'ai faite  :D  
merci !!!
apolon34 scanf c'est &i qu'il faut lui filer!
SquiiiD Voici mon code, j'ai mis un commentaire ou se trouve l'erreur, il dit acces violation at adress machin
et je ne comprend pas pq!! Tout ce que je veux faire c copier l'adresse pointee deja enregistrée dans un tableau de pointeurs TabPtr dans pCourant et il me dit que c pas bon, pourtant je n'ai pas fait de free() ni rien  
je pige po, si qqun a le courage de matter mon code ca serait cool tkx
 
 

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5. int i=0, NbList=0;
  6. char InputNom[25];
  7. char InputInsNom[25];
  8. char QueFaire;
  9. struct etudiants
  10. {
  11.    char nom[25];
  12.    etudiants * pSuivant;
  13.    etudiants * pPrecedant;
  14.    } *pCourant, *pFree;
  15. etudiants * TabPtr[15];
  16. void main()
  17. {
  18. while(strcmp("fin",InputNom)!=0)
  19. {
  20.    printf("Liste n°%d :\n\n",i+1);
  21. pCourant=(etudiants*)malloc(sizeof(struct etudiants));
  22. pCourant->pSuivant=NULL;
  23.    pCourant->pPrecedant=NULL;
  24.    /* Enregistrement de l'adresse de la liste chainee das le tableau de pointeur */
  25.    TabPtr[i]=pCourant;
  26. while(strcmp("finliste",InputNom)!=0 && strcmp("fin",InputNom)!=0)
  27.  {
  28.    scanf("%s",InputNom);
  29.       if(strcmp("finliste",InputNom)!=0 && strcmp("fin",InputNom)!=0)
  30.        {
  31.     /* Enregistrement dans la liste chainee */
  32.     strcpy(pCourant->nom,InputNom);
  33.     pCourant->pSuivant=(etudiants*)malloc(sizeof(struct etudiants));
  34.          pCourant->pSuivant->pPrecedant=pCourant;
  35.     pCourant=pCourant->pSuivant;
  36.     pCourant->pSuivant=NULL;
  37.          }
  38.    }
  39. i=i+1;
  40.    if(strcmp("fin",InputNom)!=0) strcpy(InputNom,"lol" );
  41.    }
  42. clrscr();
  43. printf("\n\nFin de programme! Appuyez sur une touche pour afficher les liste entree...\n\n" );
  44. getch();
  45. NbList=i;
  46. i=0;
  47. while(i!=NbList)
  48. {
  49.    printf("\n\nListe n°%d sur %d :\n",i+1,NbList);
  50.    pCourant=TabPtr[i];
  51. while(pCourant->pSuivant!=NULL)
  52.  {
  53.    printf("\n- %s",pCourant->nom);
  54.       pFree=pCourant;
  55.    pCourant=pCourant->pSuivant;
  56.       // free(pFree);
  57.    }
  58.    i=i+1;
  59.    }
  60. printf("Que voulez vous faire maintenant? q=Quitter i=inserer un enregistrement s=supprimer un enregistrement. " );
  61. QueFaire=getch();
  62. switch(QueFaire)
  63. {
  64.    case 'q': break;
  65.    case 'i': {
  66. printf("Quel numéro de liste?" );
  67.    scanf("%d",i);
  68.    pCourant=TabPtr[i-1];  /********* ICI ERREUR INCOMPREHENSIBLE ***********/
  69. printf("Apres quel elements? Si l'element n'existe pas l'enregistrement sera ajouté a la fin." );
  70.    scanf("%s",InputInsNom);
  71.    while(pCourant->pSuivant!=NULL && strcmp(pCourant->nom,InputInsNom)!=0)
  72.     {
  73.       pCourant=pCourant->pSuivant;
  74.       }
  75.    if(pCourant->pSuivant==NULL)
  76.     {
  77.       pCourant->pSuivant=(etudiants*)malloc(sizeof(struct etudiants));
  78.       pCourant->pSuivant->pPrecedant=pCourant;
  79.       pCourant=pCourant->pSuivant;
  80.       pCourant->pSuivant=NULL;
  81.       strcpy(pCourant->nom,InputInsNom);
  82.       pCourant->pPrecedant->pSuivant=pCourant;
  83.       printf("\nelement inséré: %s\nElement precedant: %s",pCourant->nom, pCourant->pPrecedant);
  84.       }
  85.    }
  86.    break;
  87.    }
  88. getch();
  89. }


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)