Langage C planté
Résolu
Vladimir
-
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?
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:
- Langage C planté
- Langage ascii - Guide
- Plante - Guide
- Langage binaire - Guide
- Mon telephone plante que faire - Guide
- Cette plante encore peu connue fleurit toute l'année - Et elle est magnifique ! - Guide
6 réponses
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.
"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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
- 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.