Aller au contenu

erreur en C


M3rCo

Messages recommandés

L'énnoncé =>

Créer une structure nom , prénom , âge. Ecrire un programme de gestion de fichier ( texte ) avec un menu d'acceuil qui propose de créer un fichier , de lire , d' y ajouter une fiche , et d'en chercher une .

Programme ke j'ai ou ya une erreur mé je vois pas laquelle !

#include<stdio.h>

#include<conio.h>

#include<string.h>

typedef struct

{

char nom[10];

char prenom[10];

int age;

}

carte;

void creer_fichier(FILE *f,char *n)

{

char choix;

carte fiche;

clrscr();

printf("CREATION DU FICHIER \n\n");

printf("NOM DU FICHIER A CREER:");

gets(n);

flushall();

f=open(n,"w");

do

{

printf("\nSAISIE D'UNE FICHE?(o/n)");

choix=(char)getchar();

flushall();

if ((choix=='o')||(choix=='O'))

{

printf("\nNOM:");gets(fiche.nom);

printf("PRENOM:");gets(fiche.prenom);

printf("AGE:");scanf("%d",&fiche.age);

flushall();

fwrite(&fiche,sizeof(carte),1,f);

}

}

while((choix=='o')||(choix=='O'));

fclose(f);

}

void lire_fichier(FILE *f,char *n)

{

carte fiche;

int compteur=0;

clrscr();

printf("LECTURE DU FICHIER\n\n");

printf("NOM DU FICHIER A LIRE:");gets(n);

flushall();

f=fopen(n,"r");

if(f==NULL)printf("\nERREUR? ce fichier n'EXISTE PAS\n\n");

else

{

printf("\nLISTING DU FICHIER\n\n");

while(fread(&fiche,sizeof(carte),1,f)!=0)

{

printf("fiche n %d:\n",compteur);

compteur++;

printf("%s %s %d an(s)\n\n",fiche.nom,fiche.prenom,fiche.age);

}

fclose(f);

}

printf("POUR CONTINUER PRESSER UNE TOUCHE");

getch();

}

void ajout(FILE *f,char *n)

{

carte fiche;

char choix;

clrscr();

printf("AJOUT D'UNE FICHE\n\n");

printf("NOM DU FICHIER A MODIFIER:");

gets(n);

flushall();

f=fopen(n,"a");

do

{

printf("\nSAISIE D'UNE FICHE ?(o/n)");

choix=(char)getchar();

flushall();

if((choix=='o')||(choix=='O'))

{

printf("\nNOM:");gets(fiche.nom);

printf("PRENOM:");gets(fiche.prenom);

printf("AGE:");scanf("%d,&fiche.age);

flushall();

fwrite(&fiche,sizeof(carte),1,f);

}

}

while((choix=='o')||(choix=='O'));

fclose(f);

}

void recherche(FILE *f,char *n)

{

carte fiche;

int compteur=0;

char trouve=0,nn[10],pp[10];

clrscr();

printf("RECHERCHE DE FICHE\n\n");

printf("NOM DU FICHIER:");

gets(n);

flushall();

f=fopen(n,"r");

printf("\nFICHE A RETROUVER:\n");

printf("NOM:");gets(nn);

printf("PRENOM:")gets(pp);

flushall();

while((fread(&fiche,sizeof(carte),1,f)!=0)&&(trouve==0))

{

if((strcmp(fiche.nom,nn)==0)&&(strcmp(fiche.prenom,pp)==0))

{

trouve=1;

printf("FICHE RETROUVEE: FICHE n%2d\n");

}

compteur++;

}

if(trouve==O)printf("CETTE FICHE N'EXISTE PAS\n");

fclose(f);

printf("POUR CONTINUER PRESSER UNE TOUCHE");

getch();

}

void main()

{

FILE *fichier

char nom[10];

char coix;

do

}

clrscr();

printf("\t\t\tGESTION DE FICHIER\n");

printf("\t\t\t<---------------->\n");

printf("CREATION DU FICHIER -->1\n");

printf("LECTURE DU FICHIER -->2\n");

printf("AJOUTER UNE FICHE -->3\n");

printf("RECHERCHER UNE FICHE ->4\n");

printf("QUIT -->S\n\n");

printf("VOTRE CHOIX:");

choix=(char)getchar();

flushall();

switch(choix)

{

case'1':creer_fichier(fichier,nom);break;

case'2':lire_fichier(fichier,nom);break;

case'"':ajout(fichier,nom);break;

case'4':recherche(fichier,nom);break;

}

}

while((choix!='S')&&(choix!='s'));

}

Lien vers le commentaire
Partager sur d’autres sites

De même , c'est illisible

déjà 1 erreur

dans la méthode creer_fichier

Remplace

f=open(n,"w");

par

f=fopen(n,"w");

Ensuite fait une méthode de

    printf("\nSAISIE D'UNE FICHE ?(o/n)");
   choix=(char)getchar();
   flushall();
   if((choix=='o')||(choix=='O'))
   {
       printf("\nNOM:");gets(fiche.nom);
       printf("PRENOM:");gets(fiche.prenom);
       printf("AGE:");scanf("%d,&fiche.age);
       flushall();
       fwrite(&fiche,sizeof(carte),1,f);
    }

il me semble que ce bout de code revient souvent

ensuite, pour ton erreur, t'as quel message ?

Lien vers le commentaire
Partager sur d’autres sites

Dans la méthode void ajout(FILE *f,char *n)

remplace

printf("AGE:");scanf("%d,&fiche.age);

par

printf("AGE:");scanf("%d",&fiche.age);

Dans la méthode void recherche(FILE *f,char *n)

remplace

printf("PRENOM:")gets(pp);

par

printf("PRENOM:");gets(pp);

et remplace

if(trouve==O)printf("CETTE FICHE N'EXISTE PAS\n");

par

if(trouve==0)printf("CETTE FICHE N'EXISTE PAS\n");

Fait attention, avec certains éditeurs, on ne voit pas la différence entre le "O" et le zéro "0"

C'est sans doute là le problème...

ou peut-être la présence du ' dans le printf.... ??

dans la méthode main()

remplace

void main()
{
FILE *fichier
char nom[10];
char coix;
do
}
clrscr();

par

void main()
{
FILE *fichier;
char nom[10];
char choix;
do
{
clrscr();

Ensuite ca devrait fonctionner

au pire, t'as un pb de link

ou de compilo

Tu as testé avec quel compilateur ?

Lien vers le commentaire
Partager sur d’autres sites

ben la a mon avis g pu d'erreur mé j'ai un probleme de compilo ! mon compile c Dev-c ++

kan je compile il me dit =>

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x6b):untitl~1.cpp: undefined reference to `clrscr'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0xd2):untitl~1.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x150):untitl~1.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x272):untitl~1.cpp: undefined reference to `clrscr'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x3b7):untitl~1.cpp: undefined reference to `clrscr'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x41e):untitl~1.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x49c):untitl~1.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x56a):untitl~1.cpp: undefined reference to `clrscr'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x605):untitl~1.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\M3rCo\LOCALS~1\Temp\cckzdaaa.o(.text+0x791):untitl~1.cpp: undefined reference to `clrscr'

Lien vers le commentaire
Partager sur d’autres sites

voila reponse pour le pb avec clrscr

C'est normal avec DevCpp

tu cherches 'clrscr devcpp' sur google

tu verras les reponses

c'est un pb avec la librairie conio

donc pour resoudre le pb

tu remplaces

#include<conio.h>

par

#include<conio.c>

ou alors tu utilises un compilo payant....

ou tu developpes toi meme tes routines....(certains sont faciles à faire si tu connais l'assembleur)

pour le flushall, je cherche....

Lien vers le commentaire
Partager sur d’autres sites

merci bocoup^le nombre derreur a réduit ! ca fé ke 2 mois ke je programme, il ne reste plus ke ca a corriger !

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccAPaaaa.o(.text+0x4db):lol.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccAPaaaa.o(.text+0x559):lol.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccAPaaaa.o(.text+0x7fe):lol.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccAPaaaa.o(.text+0x87c):lol.cpp: undefined reference to `flushall(void)'

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\ccAPaaaa.o(.text+0x9e1):lol.cpp: undefined reference to `flushall(void)'

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...