Erreur de segmentation - C

A voir également:Erreur de segmentationErreur de segmentation c - Conseils pratiques - Langage C Erreur de segmentation - Forum - C Erreur de segmentation (core dumped) ✓ - Forum - C Erreur de segmentation (core dumped) ubuntu ✓ - Forum - Linux / Unix [Split] ✓ - Forum - C

Bonjour.
J'ai un problème avec le programme ci que je suis entrain d'écrire. Le debugger m'indique une erreur de segmentation. Mais je ne comprends pas pourquoi !
En particulier quand j'appelle la fonction ajouter_classe().
Merci.

#include<stdio.h> #include<stdlib.h> #include<string.h>  //renseignements sur les classes struct classe { int num; char nom[50]; int effec; }; struct classe classes;  //fonction de recherche classe int recherche_classe(int code) {  FILE*classe ; classe = fopen("classes.g11", "r"); if(classe !=NULL) { do { fscanf(classe,"%d ;%s ;%ld\n",&classes.num,&classes.nom,&classes.effec); fflush(stdin); if(classes.num== code) { fclose(classe); return 1;  } }while(!feof(classe)); fclose(classe); return 0; } }   //ajouter une classe void ajouter_classe() { FILE*classe; int code; /*char c; c=';';*/ classe=fopen("classes.g11","a"); printf("\nentrez l'identifiant de la classe: "); scanf("%d",&code); fflush(stdin);  while(recherche_classe(code)==1) { printf("\ncette classe existe deja\n"); printf("entrer un nouvel identifiant"); scanf("%d",&code); } if(classe != NULL) { classes.num=code; printf("%d\n",classes.num); printf("\nentrer le nom de la classe: "); //gets(classes.nom); scanf("%s",classes.nom); fflush(stdin); printf("%s\n",classes.nom); printf("\nentrer l'effectif de la classe:"); scanf("%d",classes.effec); printf("%d\n",classes.effec); fflush(stdin);  fprintf(classe,"%d ;%s ;%d\n",classes.num,classes.nom,classes.effec); fflush(stdin);  fclose(classe); } }  //afficher la liste des classes void affiche_classe() { FILE*classe =fopen("classes.g11", "r"); printf("la liste des classes est :\n\n"); printf("Code de la classe \t; nom de la classe\t; effectif de la classe\n"); if(classe!=NULL) { do { fscanf(classe,"%d ;%s ;%d\n",&classes.num,&classes.nom,&classes.effec); fflush(stdin); printf("%d\t ;%s\t ;%d\n",classes.num,classes.nom,classes.effec); } while (!feof(classe)); fclose(classe); } }   int main() { int choix; char T; do { printf("entrer 1 pour ajouter une classe\n"); printf("entrer 2 pour afficher la liste des classes\n"); printf("entrez votre choix: "); scanf("%d",&choix); while(choix>=1 && choix<=2) { switch(choix) { case 1:ajouter_classe(); break; case 2:affiche_classe(); break; } }  printf("\nvoulez vous continuer O/N"); scanf("%s",&T); fflush(stdin); } while(T=='o' ||T=='O');}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

Forum

A voir également:Erreur de segmentationErreur de segmentation c - Conseils pratiques - Langage C Erreur de segmentation - Forum - C Erreur de segmentation (core dumped) ✓ - Forum - C Erreur de segmentation (core dumped) ubuntu ✓ - Forum - Linux / Unix [Split] ✓ - Forum - C

Web: www.shapebootstrap.net

1 réponse

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed