Langage C planté

Résolu/Fermé
Vladimir - Modifié par clem73 le 22/06/2010 à 19:54
 Vladimir - 22 juin 2010 à 19:13
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?


A voir également:

6 réponses

Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
22 juin 2010 à 17:24
Bonne question... ou est l'erreur que tu as.
sans erreur, on va pas analyser ton code :)
0
L'erreur est au niveau de "for". Cherchez à savoir qu'est ce qui bloque la boucle?
0
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
22 juin 2010 à 17:54
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
"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 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
22 juin 2010 à 18:17
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
ok et merci pout tout! Je me suis en sortit!
0