Recherche dans un fichier en C

Fermé
metnet - 6 janv. 2011 à 17:03
 metnet - 6 janv. 2011 à 22:12
Bonjour,


En fait j'ai un souci au niveau de ma fonction de recherche dans un fichier qui contient des noms( sam, real2 etc..) que j'ai déja crée.
J'arrive pas à avoir Recherche Ok meme si je rentre un nom existant.
Merçi de m'aider svp
voici le code en C

#include<stdio.h>
#include<string.h>
typedef struct { //Déclaration structure film
char titre[80];
int idfilm;
int idreal;
}film;
typedef struct { //Déclaration structure Réalisateur
char nom[40];
int idreal;
}personne;
typedef struct { //Déclaration structure acteur
char nomacteur[40];
int idacteur;
}acteur;

int recherche(char nomderecherche)
{
personne p;
film f;
acteur a;
char nomdonne;
int test=1;
FILE *fic1= NULL;
fic1=fopen("fichier.txt","r");
if (fic1 != NULL)
/* while(!feof(fic1)&&(test==0))
{
fread(&p, sizeof(p), 1, fic1);
if(!strcmp(p.nom,"nomdonne"))*/
do
{

fread(&p, sizeof(p), 1, fic1);
test=(strcmp(p.nom,"nomdonne"));
fclose(fic1);
return(test);
}while(!feof(fic1)||(test==1));
}
/*else
printf("Impossible d'ouvrir le fichier fichier.txt");
} */
int main(){
personne p;
film f;
acteur a;
char nomdonne;
int test;
printf("Donner le nom du réalisateur recherché \n");
scanf("%s",&nomdonne);
test=recherche(nomdonne);
if(test==0)
printf("Recherche Ok\n");
else
printf("Recherche Non Ok!\n");
//printf("%d",recherche(nomdonne));
getchar();
getchar();
}

A voir également:

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
Modifié par Pacorabanix le 6/01/2011 à 18:00
salut,

premièrement lorsque tu postes du code dans ce forum utilise les balises code


comme ceci     
   ça permet de mieux mettre       en forme    
ton texte


au lieu d'avoir

comme ceci
ça permet de mieux mettre en forme
ton texte



ensuite,

enlevons les commentaires (des essais ? )

de ta fonction, ça donne :

int recherche(char nomderecherche)   
{   
  personne p;   
  film f;   
  acteur a;   
  char nomdonne;   
  int test=1;   
  FILE *fic1= NULL;   
  fic1=fopen("fichier.txt","r");   
  if (fic1 != NULL)   
    do   
    {   
       
      fread(&p, sizeof(p), 1, fic1);   
      test=(strcmp(p.nom,"nomdonne"));   
      fclose(fic1);   
      return(test);   
    }while(!feof(fic1)||(test==1));   
     

} 



je dois dire que je ne comprends pas ce que tu fais.

tout d'bord, "nomdonne" c'est pas censé être une variable ?
que tu devrais remplir avec ce qui est passé en argument ?

ensuite, quoiqu'il arrive tu lis un truc, et même si ce n'est pas ce que tu cherches tu fermes le fichier immédiatement et tu renvoies le résultat... résultat tu termine ta fonction immédiatement après avoir lu le premier truc qu'il y a dans ton fichier, sans faire le reste de ta boucle.

ensuite, la manière dont tu procèdes dépend fortement de comment tu as mis tes données dans ton fichier.

si tu utilises fread() avec ta structure, il faudrait en théorie que tu ais utilisé fwrite() avec ta structure pour l'avoir enregistré dedans au préalable. c'est le cas ?
0
pédagogue ! Le code source est illisible.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
6 janv. 2011 à 20:48
mdr, c'est la meilleure insulte qu'on m'ait envoyé xD

et sinon, effectivement...
0
Ok je prends acte mais pourriez vous me filer un code qui fait une recherche dans un fichier un nom donnée le fichier est comme suit : nom id
0