Langage C planté

Résolu
Vladimir -  
 Vladimir -
Bonjour,
j'essaie de créer un fichier qui permettra aux utilisateurs d'entrer 5 matieres de leur choix d'ajouter des coefficients.
Seulement des que j'exécute mon code il planque. Le voici:

#include<stdio.h>
#include<stdlib.h>
struct matiere
{
int code, coeff;
char libelle[20];
};
int main ()
{
FILE *matieres=NULL;
int i;
struct matiere mati;
matieres=fopen("matieres.dat","w");
for(i=1;i<=5;i++)
{
mati.code=i;
printf("Entrez le nom de la matiere %s : ", i);
scanf("%s",&mati.libelle);
printf("Entrez le coefficient : ");
do
{
scanf("%d",&mati.coeff);
}
while((mati.coeff<0)||(mati.coeff>20));
printf("\n");
}
fclose(matieres);
matieres=fopen("matieres.dat","r");
if(matieres==NULL) printf("Echec de l'ouverture du fichier\n");
else
{
printf("\t\tLISTE DES MATIERES\n");
printf("Numeros\tLibelles\t\tCoefficients\n\n");
fread(&mati,sizeof(mati),1,matieres);
while(!feof(matieres))
{
printf("%d\t %s\t\t %d\n",mati.code, mati.libelle, mati.coeff);
fread(&mati,sizeof(mati),1,matieres);
}
fclose(matieres);
}
printf("\n");
system("pause");
return 0;
}

Où est l'erreur svp?


6 réponses

Krysstof Messages postés 1489 Date d'inscription   Statut Membre Dernière intervention   294
 
Bonne question... ou est l'erreur que tu as.
sans erreur, on va pas analyser ton code :)
0
Vuvuzela
 
L'erreur est au niveau de "for". Cherchez à savoir qu'est ce qui bloque la boucle?
0
Krysstof Messages postés 1489 Date d'inscription   Statut Membre Dernière intervention   294
 
je précise pour mon amis nasri qui a l'air d'avoir des problème de compréhension en plus d'etre insultant et mal élevé... sont programme plante, il doit donc avoir un message d'erreur, je veux sont message d'erreur.
0
Vuvuzela
 
"Matieres.dat" a cessé de fonctionner et après le programme va se fermer. C'est celui là le problème. Désolé pour l'incident Kryssof avec Nasri. J'ai signalé son commentaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Krysstof Messages postés 1489 Date d'inscription   Statut Membre Dernière intervention   294
 
bug que je vois comme ca

- dans ton code, tu n'écris jamais rien dans le fichier.

- scanf("%d",&mati.coeff); %d n'est pas un entier, alors que coeff est un int

- scanf("%s",&mati.libelle); tu a alloué 20 caractere pour ta chaine de caractère mais tu ne teste pas si ce qui est saisi ne dépasse pas.


mais plus important, c'est un bug (le programme ne fait pas ce que tu veux?) ou c'est un planTage (code d'erreur avec une message systeme?) que tu as ?

si c'est un message d'erreur copie et colle ce message exact ici.
0
Vladimir
 
ok et merci pout tout! Je me suis en sortit!
0