Erreurs - Langage C

Résolu/Fermé
alibm Messages postés 82 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 - 5 mai 2009 à 23:22
alibm Messages postés 82 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 - 6 mai 2009 à 06:23
Bonjour,
S'il vous plaît quelqu'un voir ce code en C et le compiler.
Le compilateur m'a gené, il ne reste que 4 erreurs que je crois qui ssont justes.
Il se peut qu'il y a une problème dans mon système.


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//declaration de la structure
typedef struct
{
char nom[50];
char prenom[50];
int age;
char adresse[50];
char ville[50];
}personne;
//declaration du fichier
FILE* f;
//procedure creation du fichier
void creation(char nomf[])
{
FILE* f;
f=fopen(nomf,"w");
if (f != NULL )
{
printf("%s a ete cree avec succee\n",nomf);
}
}
//procedure affichage
void affichage(char nomf[])
{
char nom[50];
char prenom[50];
int age;
char adresse[50];
char ville[50];
FILE* f;
f=fopen(nomf,"r");
while (!fEOF(f))
{
fscanf(f,"%s",nom);
fscanf(f,"%s",prenom);
fscanf(f,"%d",&age);
fscanf(f,"%s",adresse);
fscanf(f,"%s",ville);
printf("%s : %s : %d : %s : %s",nom,prenom,age,adresse,ville);
}

}
//procedure ajout
void ajout(char nomf[])
{
char nom[50];
char prenom[50];
int age;
char adresse[50];
char ville[50];
FILE* F;
f=fopen(nomf,"w");
personne p;
printf("Donner nom :");scanf("%s",p.nom);
printf("Donner prenom:");scanf("%s",p.prenom);
printf("Donner age :");scanf("%d",&p.age);
printf("Donner adresse :");scanf("%d",p.adresse);
printf("Donner ville :");scanf("%d",p.ville);
//ajout dans le fichier
fprintf(f,"%s:%s:%d:%s:%s",nom,prenom,age,adresse,ville);
}
//recherche d'info
void recherche ( char nomf[] )
{
FILE f;
f=fopen(nomf,"r");
char cmp[40], rech[40], nom[45];
unsigned result;
printf("Donner nom à chercher");
scanf("%s",rech);
while (! fEOF(f))
{
cmp=fscanf(f,"%s",nom);
result=strcmp(cmp,rech);
if( result>0 )
printf("%s existe",rech);
else
printf("%s n''existe pas", rech);
}
}
//programme principale
int main()
{
int c; //choix
char nomf[70];
printf("Donner le chemin du fichier");
scanf("%s",nomf);
do
{
printf("Menu \n");
printf(" 1 Cree le fichier \n");
printf(" 2 Afficher le contenu du fichier\n");
printf(" 3 Ajouter une personne \n");
printf(" 4 chercher une personne \n");
printf(" 0 Quitter \n");
printf(" Donner choix:");
scanf("%d",&c);
switch (c)
{
case 1: creation(nomf);
case 2: affichage(nomf);
case 3: ajout(nomf);
case 4: recherche(nomf);
case 0: printf("merci");
}

} while( c != 0 );
return 0;
}



A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
5 mai 2009 à 23:36
Salut,
Evite les variables globales comme ton File *f. C'est déconseillé, surtout que tu masques sa visibilité puisque tu redéfinis dans les fonctions. Il vaut mieux le créer une fois dans ton main, et passer la variable en paramètres pour les autres fonctions. En plus dans ta fonction recherche(), tu as mis FILE f au lieu de File *f;
Attention à ne pas oublier "break" dans ton switch pour les différents "cases".

Tu as mis fEOF au lieu de feof();

scanf("%d",p.adresse);
p.adresse n'est pas de type entier. Il faut utiliser "%s". Même remarque pour p.ville.

Cdlt
0
alibm Messages postés 82 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 15 juin 2011 6
6 mai 2009 à 06:23
Merci :)

0