Tom's Guide > Forum > Programmation > Probleme de recherche dans un fichiers en langage C

Probleme de recherche dans un fichiers en langage C

Forum Programmation : Probleme de recherche dans un fichiers en langage C

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour tout le monde!

j'ai un probleme pour finir un exercice en langage C sur les fichiers.J'arrive pas a faire le choix 3 et le choix 4.Voila l'enoncé de l'exercice :

Ecrire une fonction "saisie" permettant de rentrer un numero, un nom et un prenom.Ecrire ensuite une fonction "affiche" affichant le numero de matricule, le nom et le prenom à l'ecran. Ecrire un programme structuré sous forme de menu proposant les options suivantes :
1 : creation du fichier dt le nom sera entré au clavier.
2 : addition à la fin du fichier d'un nombre d'elements.
3 : recherche à travers le fichier et affichage du matricule, nom et prenom pour tos les elements du fichier correspondant au nom saisi au clavier.
4 : affichage des caracteristiques (matricule, nom, prenom) pour le premier element du fichier dont le nom correspond à celui entré.

Si vous pouvez m'aider ce serait sympa je bloque vraiment là et j'ai mon exam mardi :)

Merci beaucoup.

voila le debut du programme que j'ai deja fait :

#include<stdio.h>


void saisie(char nom[50],char prenom[50],int *mat)
{
printf("Entrez le matricule : " );
scanf("%d",mat);

printf("Entrez le nom du comdamné a mort : " );
scanf("%s",nom);

printf("Entrez le prenom du comdamné a mort : " );
scanf("%s",prenom);
}




void affiche(char nom[50],char prenom[50],int mat)
{
printf("le numero de matricule est : %d",mat);

printf("le nom du comdamné a mort est : %s \net son prenom est :
%s",nom,prenom);
}




int main()
{
int choix,nbr,nbr2,p,i;
char nomf[50];
char n1[50],n2[50];
char rechnom[50];

FILE *fp;


printf("Que voulez vous faire?\n" );
printf("1. creation du fichier dont le nom sera entré au clavier\n" );
printf("2. addition à la fin du fichier d'un nombre d'elements demandé
a l'utilisateur\n" );
printf("3. recherche a travers le fichiers\n" );
printf("4. affichage des caracteristiques pour le premier element du
fichier dont le nom correspond à celui entré\n" );

scanf("%d",&choix);

switch(choix)
{
case 1 :
printf("entrez le nom du fichier : " );
scanf("%s",nomf);

fp=fopen(nomf,"w" );

if (fp==0)
return -1;

printf("entrez le nombre d'enregistrements : " );
scanf("%d",&nbr);

for(i=0;i<nbr;i++)
{
saisie(n1,n2,&p);
fprintf(fp,"%s\t%s\t%d\n",n1,n2,p);
}

fclose(fp);

break;

case 2 :

printf("quel fichier voulez vous ouvrir : " );
scanf("%s",&nomf);


fp=fopen(nomf,"a" );

if (fp==0)
{
printf("erreur ouverture fichier\n" );
return -1;
}

printf("entrez le nombre d'enregistrements a ajouter : " );
scanf("%d",&nbr2);

for(i=0;i<nbr2;i++)
{
saisie(n1,n2,&p);
fprintf(fp,"%s\t%s\t%d\n",n1,n2,p);
}

fclose(fp);

break;


case 3 :

printf("quel fichier voulez vous ouvrir : " );
scanf("%s",&nomf);

printf("entrez le nom a rechercher :" );
scanf("%s",&rechnom);

fp=fopen(nomf,"r" );

break ;

case 4 :

break ;
}

return 0;
}

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

pense aux balise code
Une petite fonction qui peut aider:
un_enr prend comme valeur 0 pour indiquer l'affichage de tout les elements et une valeur differente de 0 pour afficher que le premier.
je te laisse voir le manuel des fonctions que tu connais pas

Code :
  1. void rechercher (FILE *fp, char *nom, int un_enr)
  2. {
  3.   int nombre_afficher = 0;
  4.   char nom_lu[50], prenom_lu[50];
  5.   int matricule_lu;
  6.   if (fp == NULL) return;
  7.   rewind (fp);
  8.   while (!feof (fp))
  9.   {
  10.     if (fscanf (fp, "%s\t%s\t%d\n", nom_lu, prenom_lu, &matricule_lu) != 3)
  11.       return;
  12.     if (strcmp (nom_lu, nom) == 0)
  13.     {
  14.       nombre_afficher++;
  15.       affiche (nom_lu, prenom_lu, matricule_lu);
  16.     }
  17.     if (un_enr && !nombre_afficher)
  18.       break;
  19.   }
  20. }


il peut y avoir des erreurs, c'est fait vite fait.
d'ailleurs y a plein de depassement de buffer qui peuvent se produire dans ton programme.
mais bon comme c'est un exercice (pour débuter)


Message édité par coca25 le 12-12-2006 à 18:34:54
Répondre à coca25
Tom's Guide > Forum > Programmation > Probleme de recherche dans un fichiers en langage C
Aller à :

Il y a 2610 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens