SquiiiD be cool ! | 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 :
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #include <malloc.h>
- int i=0, NbList=0;
- char InputNom[25];
- char InputInsNom[25];
- char QueFaire;
- struct etudiants
- {
- char nom[25];
- etudiants * pSuivant;
- etudiants * pPrecedant;
- } *pCourant, *pFree;
- etudiants * TabPtr[15];
- void main()
- {
- while(strcmp("fin",InputNom)!=0)
- {
- printf("Liste n°%d :\n\n",i+1);
- pCourant=(etudiants*)malloc(sizeof(struct etudiants));
- pCourant->pSuivant=NULL;
- pCourant->pPrecedant=NULL;
- /* Enregistrement de l'adresse de la liste chainee das le tableau de pointeur */
- TabPtr[i]=pCourant;
- while(strcmp("finliste",InputNom)!=0 && strcmp("fin",InputNom)!=0)
- {
- scanf("%s",InputNom);
- if(strcmp("finliste",InputNom)!=0 && strcmp("fin",InputNom)!=0)
- {
- /* Enregistrement dans la liste chainee */
- strcpy(pCourant->nom,InputNom);
- pCourant->pSuivant=(etudiants*)malloc(sizeof(struct etudiants));
- pCourant->pSuivant->pPrecedant=pCourant;
- pCourant=pCourant->pSuivant;
- pCourant->pSuivant=NULL;
- }
- }
- i=i+1;
- if(strcmp("fin",InputNom)!=0) strcpy(InputNom,"lol" );
- }
- clrscr();
- printf("\n\nFin de programme! Appuyez sur une touche pour afficher les liste entree...\n\n" );
- getch();
- NbList=i;
- i=0;
- while(i!=NbList)
- {
- printf("\n\nListe n°%d sur %d :\n",i+1,NbList);
- pCourant=TabPtr[i];
- while(pCourant->pSuivant!=NULL)
- {
- printf("\n- %s",pCourant->nom);
- pFree=pCourant;
- pCourant=pCourant->pSuivant;
- // free(pFree);
- }
- i=i+1;
- }
- printf("Que voulez vous faire maintenant? q=Quitter i=inserer un enregistrement s=supprimer un enregistrement. " );
- QueFaire=getch();
- switch(QueFaire)
- {
- case 'q': break;
- case 'i': {
- printf("Quel numéro de liste?" );
- scanf("%d",i);
- pCourant=TabPtr[i-1]; /********* ICI ERREUR INCOMPREHENSIBLE ***********/
- printf("Apres quel elements? Si l'element n'existe pas l'enregistrement sera ajouté a la fin." );
- scanf("%s",InputInsNom);
- while(pCourant->pSuivant!=NULL && strcmp(pCourant->nom,InputInsNom)!=0)
- {
- pCourant=pCourant->pSuivant;
- }
- if(pCourant->pSuivant==NULL)
- {
- pCourant->pSuivant=(etudiants*)malloc(sizeof(struct etudiants));
- pCourant->pSuivant->pPrecedant=pCourant;
- pCourant=pCourant->pSuivant;
- pCourant->pSuivant=NULL;
- strcpy(pCourant->nom,InputInsNom);
- pCourant->pPrecedant->pSuivant=pCourant;
- printf("\nelement inséré: %s\nElement precedant: %s",pCourant->nom, pCourant->pPrecedant);
- }
- }
- break;
- }
- getch();
- }
|
Message édité par SquiiiD le 23-06-2002 à 18:33:30
|