begin process at 2012 05 28 20:14:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

demande d'aide (Gestion des fichiers et structures en C)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

demande d'aide (Gestion des fichiers et structures en C)

jeudi 2 juin 2011 à 21:45:31 | demande d'aide (Gestion des fichiers et structures en C)

medsky

Bonjour,

Afin de manipuler les fichiers et les structures en C, On m'a demandé de réalisé une application qui cree un fichier pour saisir les informations des étudiants ( Nom / prénom / CNE) avec la possibilité de d'ajout /suppression /recherche.
qq peut m'aider a trouver les erreurs a corrigé dans ce code etmerci d'avance

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

typedef struct
{
char nom[10];
char prenom[10];
int CNE;
}
carte; /* creation de la carte d informations*/
//*********************************************************************//
//*********************** La creation du fichier*****************************//
//*********************************************************************//

void creer_fichier(FILE *f,char *n)
{
char choix;
carte fiche;
system("cls");
system("color E4");
printf(" ************* Creation du fichier ***************** \n\n");
printf(" Nom du fichier a cree: ");
gets(n);
f = fopen(n,"w");
do
{
printf("\n Saisir une fiche d information ?(o/n) ");
choix = (char)getchar();
if ((choix=='o')||(choix=='O'))
{
printf("\nNOM: ");
gets(fiche.nom);
printf("\nPRENOM: ");
gets(fiche.prenom);
printf("CNE: ");
scanf("%d",&fiche.CNE);
fwrite(&fiche,sizeof(carte),1,f);
}
}
while((choix=='o')||(choix=='O'));
fclose(f);
}
//**********************************************************************//
//*************************La lecture du fichier*****************************//
//*********************************************************************//

void lire_fichier(FILE *f,char *n)
{
carte fiche;
int compteur=0;
system("cls");
system("color E4");
printf("*************** Lecture du fichier ***************\n\n");
printf("Nom du fichier a lire: ");gets(n);
f = fopen(n,"r");
if (f == NULL)
printf("\n ERREUR, ce fichier n'existe pas :-( \n\n");
else
{
printf("\nLISTING DU FICHIER\n\n");
while(fread(&fiche,sizeof(carte),1,f)!=0)
{
printf("fiche noeud: \n",compteur);
compteur++;
printf("%s %s %d an(s)\n\n",fiche.nom,fiche.prenom,fiche.CNE);
}
fclose(f);
}
printf("Pour continuer tapper une touche svp ");
getch();
}

//**********************************************************************//
//************************ lA commande d ajout ****************************//
//**********************************************************************//

void ajout(FILE *f,char *n)
{
carte fiche;
char choix;
system("cls");
system("color E4");
printf("********** Ajout d une fiche d information *********** \n\n");
printf("Nom du fichier a modifier: ");
gets(n);
f = fopen(n,"a");
do
{
printf("\n Saisir une fiche d information ?(o/n) ");
choix = (char)getchar();
if ((choix=='o')||(choix=='O'))
{
printf("\nNOM: ");gets(fiche.nom);
printf("PRENOM: ");gets(fiche.prenom);
printf("CNE: ");scanf("%d",&fiche.CNE);
fwrite(&fiche,sizeof(carte),1,f);
}
}
while((choix=='o')||(choix=='O'));
fclose(f);
}
//*********************************************************************//
//********************** La commande de recherche ***********************//
//********************************************************************//

void recherche(FILE *f,char *n)
{
carte fiche;
int compteur=0;
char trouve = 0,nn[10],pp[10];
system("cls");
printf("Recherche du fiche d information \n\n");
printf("Nom du fichier: ");
gets(n);
f = fopen(n,"r");
printf("\n Fichier a retrouver :\n");
printf("NOM: ");gets(nn);
printf("PRENOM: ");gets(pp);
while((fread(&fiche,sizeof(carte),1,f)!=0)&&(trouve==0))
{
if((strcmp(fiche.nom,nn)==0)&&(strcmp(fiche.prenom,pp)==0))
{
trouve=1;
printf("fichier trouve: FICHE noeud\n",compteur);
}
compteur++;
}
if (trouve==0)printf("Oh ! la fiche n exist pas :-( \n");
fclose(f);
printf("Taper une touche pour continuer");
getch();
}
//**********************************************************************//
//**************************** Le Menu *********************************//
//**********************************************************************//

int main()
{
FILE *fichier;
char nom[10];/* nom du fichier */
char choix;
do
{
system("color f1");
printf("\n");
printf("\n");
printf("\n");
printf("\t*************************************************************");
printf("\n\t*************************************************************");
printf("\n\t* *");
printf("\n\t* CREATION DU FICHIER ---> 1 *");
printf("\n\t* LECTURE DU FICHIER ---> 2 *");
printf("\n\t* AJOUTER UNE FICHE D INFORMATION ---> 3 *");
printf("\n\t* RECHERCHER UNE FICHE ---> 4 *");
printf("\n\t* SORTIE ---> S *");
printf("\n\t* VOTRE CHOIX: *");
printf("\n\t* *");
printf("\n\t* *");
printf("\n\t************************************************************");
printf("\n\t************************************************************");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
choix = (char)getchar();
switch(choix)
{
case '1':creer_fichier(fichier,nom);break;
case '2':lire_fichier(fichier,nom);break;
case '3':ajout(fichier,nom);break;
case '4':recherche(fichier,nom);break;
}
}
while ((choix!='S') && (choix!='s'));
}
priere de répondre
vendredi 3 juin 2011 à 09:35:37 | Re : demande d'aide (Gestion des fichiers et structures en C)

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

Il faut que tu ouvres le fichier (fopen) en format binaire et non texte. Vu le fonctionnement de ton prog, il n'est pas nécessaire d'utiliser les streams, tu ne t'en sert pas.

f << carte.pchar << "prenom" << "3432345";
fgets()...

PS: Faut pas s'appeler marie-antoinette avec ton prog :) Soit tu limites les entrées clavier à 10, soit tu testes que la taille soit correcte par passage dans un buffer intermediaire avant de sauvegarder.

@++


Cette discussion est classée dans : fichier, printf, choix, char, fiche


Répondre à ce message

Sujets en rapport avec ce message

Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl [debutant]attribution dun mot a une char et comparaison ... [ par DarkEbola ] en fait, jaurais aimé attribuer du texte a une charkke chose comme 500 ou 600 caracteres maximais jarrive pas a lui attribuer plus de 1 Charsuis-je pl Je cherche l'erreur [ par ScorpionTiti ] J'ai effectué un programme qui me permette d'écrire dans un fichier et je l'ai compilé. En le lançant, il m'envoie un message d'erreur mais je ne sais CRYPTAGE !!! [ par megaman ] Voilà j'essai de faire un log de cryptage à l'aide de fonctions et procédure.Les fonctions et procédures :Une fonction qui retourne le nom de fichieru SOS manque d'inspiration [ par graall ] J'ai besoin de faire un petit programme (en mode console) qui demande à l'utilisateur de saisir le nom d'un fichier et ensuite, qui vérifie si ce fich Problème de lecture fichier [ par nach73 ] J'ai un enorme probleme je n'arrive pas a lire dans mon fichierVoila la partie de mon programme.Si quelqu'un peux m'aide.Merci.//ouverture du fichier Aide pour enregistrement fichier en C [ par petit_mateo ] Voici mon code :#include #include #include int x(){   char ANCIEN[] = "resta.txt";   char NOUVEAU[] = "restb.txt";   FILE *INFILE, *OUTFILE;< Copier/coller de données contenue dans un fichier en C [ par petit_mateo ] Voici mon code :#include #include #include int x(){   char ANCIEN[] = "resta.txt";   char NOUVEAU[] = "restb.txt";   FILE *INFILE, *OUTFILE;< probleme de recherche dans un fichier [ par jekburn ] // Bonsoir, mon programme est un repertoire téléphonique, on peut rentré un nom et // un n° de tél.// les données s'incrivent bien dans le fichier, ma sortie de programme impossible [ par maniolar ] Bonjour à tous, celafait deux jours que je tente deseperemment de trouver un moyen de sortir de mon prog correctement mais je n'y arrive pas!! j'ai l'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales