Erreur de segmentation
Harvard226
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
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.
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. |
A voir également:
- Erreur de segmentation
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Comment recuperer whatsapp supprimé par erreur - Guide