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

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Rechercher un mot dans un fichier et afficher son contenu en C/C++


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

Rechercher un mot dans un fichier et afficher son contenu en C/C++

jeudi 20 mars 2008 à 17:31:58 | Rechercher un mot dans un fichier et afficher son contenu en C/C++

M_didi

Bonjour,

encore moi et oui. Je suis toujours sur mn fichier de mesure. Voilà, je voudrais savoir comment on peut rechercher un mot et afficher son contenu se trouvant dans un fichier.
Exemple d'un livre:
- nom : truc
- reference : AF
- note obtenu : 12.

Mon pb est que j'utilise une structure. Ainsi, j'ai essayé de créer une fonction void nomChercher () mais cela n'a pas marcher .
J'ai donc essayé de faire ceci directement dans le main mais sans succès :

         cout << "Entrer un nom de livre pour consulter ses donnees [0 = POUR QUITTER]: ";
        cin >> nomSaisiATrouver;
     
        fgets(nomSaisiATrouver, sizeof nomSaisiATrouver, pFichier);
         fscanf(pFichier,"%s",&Mesures[n].reference) != 1;
         fscanf(pFichier,"%ld",&Mesures[n].resultat) != 1;
        
          cout << "les donnees concernant " << nomSaisiATrouver << "sont : " << endl;
       
         cout << "- Reference : " << Mesures[n].reference << endl;
         cout << "- Resultat  : " << Mesures[n].resultat  << endl;
         ++n;     


J'avais réussi à "bidouiller" pour obtenir l'intégralité des données mais cela ne fonctionnait pas bien car il n'affiche que soit une donnée ou rien. De plus, je ne sais pas encore me servir des buffers donc si vous pouvez m'aider à trouver une solution simple cela serait sympa. 

Merci.
   
      M_didi 
jeudi 20 mars 2008 à 18:22:26 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

Neo_Fr

Membre Club
Salut,
Tu devrait lire x structures et les mettres dans un buffer et ensuite tu compares le membre nom avec le nom entrée par l'utilisateur si c'est egale tu affiche les infos, sinon tu continu jusqua la fin du fichier..

Neo_Fr
jeudi 20 mars 2008 à 18:26:02 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

M_didi

Ok, mais comme je l'ai signalé je n'ai pas encore vu donc pas encore appris l'utilisation des buffers.  Mais, je vais de creuser ton idée en n'utilisant pas les buffers.

Merci



  
      M_didi 

jeudi 20 mars 2008 à 18:28:48 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

Neo_Fr

Membre Club
Poste la déclaration de ta structure et je te fais un exemple si tu veux..

Neo_Fr
jeudi 20 mars 2008 à 18:34:08 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

SAKingdom

Membre Club
struct mesures
{
    char nom[20];
    char reference[15];
    long resultat;
};

mesures toto;

fread(&toto, sizeof(mesures), 1, pFichier);

Voilà. Suffit de faire fread en boucle pour tout lire. Cependant, c'est complètement impensable de faire cela dans un réel programme. Il faut passer par un buffer sinon adieu la performance.

C++ (@++)

jeudi 20 mars 2008 à 18:37:53 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

SAKingdom

Membre Club
Une chose que je trouve bizarre:
fscanf(pFichier,"%s",&Mesures[n].reference) != 1;

???
C'est quoi cette ligne ?

C++ (@++)

jeudi 20 mars 2008 à 18:41:16 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

M_didi

ok. Voici mon code

#include <iostream>
#include <fstream>

using namespace std;


// --- Déclaration de la structure mesure
struct MESURE
{
   char nom[20];
   char reference[15];
   long resultat;
};


int main()
{
   try
   {
      
      //déclaration d'un tableau de Mesures de même structure que MESURE
      MESURE Mesures[1000];  
     
      //déclaration du nom de fichier qui sera créé par l'utilisateur
      char   nomFichier[256];

      //initialisation de la variable n
      int n = 0;
     
      //déclaration du pointeur sur une structure de type FILE
      FILE * pFichier;
          

      // ************************************************************
      // Création et écriture des données dans un fichier
      // ************************************************************

      cout << "\nEntrez le nom du fichier a creer : ";
      cin  >> nomFichier;

      // --- Ouverture du fichier en écriture
      pFichier = fopen(nomFichier,"wt");
     
      //teste l'ouverture du fichier
      if (pFichier == NULL) throw "Erreur d'ouverture du fichier en ecriture !";

      // --- Boucle permettant à l'utilisateur de saisir de 1 à n mesures     
      while (true)
      {
         cout << "\nSaisie de la mesure " << n + 1 << endl;

         cout << "- Nom (0=fin) : ";
         cin  >> Mesures[n].nom;
        
         //condition permettant de quitter la saisie des mesures
         if (Mesures[n].nom[0] == '0') break;
        
         cout << "- Reference   : ";
         cin  >> Mesures[n].reference;

         cout << "- Resultat    : ";
         cin  >> Mesures[n].resultat;

         // --- Ecriture des données dans le fichier précédemment créé
         fprintf(pFichier,"%s\n",Mesures[n].nom);
         fprintf(pFichier,"%s\n",Mesures[n].reference);
         fprintf(pFichier,"%ld\n",Mesures[n].resultat);

         //incrémentation de la variable n
         ++n;
        
         //condition permettant de mettre fin automatiquement à la saisie des mesures
         if (n == 1000) break; // ouf !
      }

      // --- Fermeture du fichier
      fclose(pFichier);

   
      // ************************************************************
      //  Ouverture et écriture d'un fichier
      // ************************************************************

      // --- Ouverture du fichier en lecture
      pFichier = fopen(nomFichier,"rt");
     
      //teste l'ouverture du fichier
      if (pFichier == NULL) throw "Erreur d'ouverture du fichier en lecture !";

      // --- Boucle de lecture et d'affichage des mesures saisies
      cout << endl << endl << endl;
     
      //initialisation de la variable n à 0
      n = 0;
     
      //boucle permettant de lire l'intégralité du fichier
      while (! feof(pFichier))
      {
         if (fscanf(pFichier,"%s",&Mesures[n].nom)       != 1) break;
         if (fscanf(pFichier,"%s",&Mesures[n].reference) != 1) break;
         if (fscanf(pFichier,"%ld",&Mesures[n].resultat) != 1) break;
         cout << "\nMesure " << n + 1 << endl;
         cout << "- Nom       : " << Mesures[n].nom       << endl;
         cout << "- Reference : " << Mesures[n].reference << endl;
         cout << "- Resultat  : " << Mesures[n].resultat  << endl;
         ++n;        
        
      }
    

      // --- Fermeture du fichier
      fclose(pFichier);
   } // fin de try


   // --- Fonction permettant "d'attraper" les erreurs pour pouvoir les gérer ensuite
   catch (const char* erreur)
   {
      cout << erreur << endl;
      system("pause");
     
      //fin de l'exécution du programme ==> anomalie
      abort();
   }

  
   cout << endl;
   system("pause");
   return 0;
}

J'ai essayé de mettre un peu de couleur pour faire moins triste. J'ai retiré ce que j'ai fait car sinon je crois que je me serais fais tirer les oreilles, car il y avait des trucs pas très très propres.

Merci

  
      M_didi 

jeudi 20 mars 2008 à 18:47:45 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

SAKingdom

Membre Club
fprintf(pFichier,"%s\n",Mesures[n].nom);
fprintf(pFichier,"%s\n",Mesures[n].reference);
fprintf(pFichier,"%ld\n",Mesures[n].resultat);

Pourquoi ne pas écrire d'un coup la structure dans le fichier:
fwrite(&Mesures[n], sizeof(mesures), 1, pFichier);

Tu pourras ensuite lire tout d'un coup comme j'ai montré plus haut:

fread(&Mesures[n], sizeof(mesures), 1, pFichier);

Mais je le répète, c'est impensable de faire cela dans un vrai code.

C++ (@++)

jeudi 20 mars 2008 à 18:55:04 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

SAKingdom

Membre Club
A vrai dire, je ne comprend pas vraiment ton code.
        cout << "\nSaisie de la mesure " << n + 1 << endl;

         cout << "- Nom (0=fin) : ";
         cin  >> Mesures[n].nom;
        
         //condition permettant de quitter la saisie des mesures
         if (Mesures[n].nom[0] == '0') break;
        
         cout << "- Reference   : ";
         cin  >> Mesures[n].reference;

         cout << "- Resultat    : ";
         cin  >> Mesures[n].resultat;

Tu stock tes valeurs dans un tableau de structures. Cependant, à quoi sert t-il ? Tu écris immédiatement après ces même valeurs dans le fichier. Le tableau ne sert donc à rien


Tu pourrais écrire (et lire aussi) tout le tableau d'un seul coup après avoir entré toutes les valeurs non ?
(1000 ça fait beaucoup à écrire)

C++ (@++)

jeudi 20 mars 2008 à 20:12:21 | Re : Rechercher un mot dans un fichier et afficher son contenu en C/C++

M_didi

Merci de vos commentaires.

Je débute en langage C/C++ donc, j'ai encore du mal faire les choses correctes. Je suis donc preneuse si il y a une optimisation possible. Au début, j'avais utiliser les ifstream et les ofstream mais sans succès.

      M_didi 

1 2

Cette discussion est classée dans : fichier, mot, afficher, cout, rechercher


Répondre à ce message

Sujets en rapport avec ce message

rechercher un mot dans un fichier txt et afficher toue la ligne [ par briaros76 ] J'aimerai savoir comment je doit mi prendre pour rechercher un mot dans un fichier texte et ensuite afficher toute la ligne sur laquelle il ce trouve. afficher plusieurs lignes qui contient le mot rechercher [ par cobra176 ] c'est un code demander par quelqu'un d'autre et que quelqu'un a répondu mais il n'afficherque la premier ligne et moi je recherche le moyens d'affiche Lire un fichier et l'afficher [ par sebastienmz ] bonjour j'ai un problème comme d'habitude mais la c'est bizzard je veux juste afficher le contenu d'un fichier .txt mais cela maffiche que les 8 premi Rechercher une chaîne de caractère dans un fichier et afficher la ligne !! [ par UncleShu ] Exemple : Mot à rechercher :-> friend----fichier où il faut rechercher le mot-----enfant childenfants childrenami friendwhen afficher les mots d'un fichier texte [ par cyrina84 ] Bonjours à tous les developpeurs icic présent, J'ai un probleme que je souffre depuis 3jours et j'espere que vous m'aidiez. Donc voila J'ai fichier te rechercher un mot dans un fichier txt [ par tanguy704 ] Bonjour Je suis entrain de réaliser un jeu genre scrabble. Les mots valides proposés par les joueurs sont stockés dans un fichier txt un mot par lign Utilisation de tellg() [ par Ferdi ] Bonjour Je vous demanderai d'être indulgent car je suis débutant. Mon bout de programme est à la fin de ce message. Il ne sert qu'à essayer de me fai Récupération d'un mot aléatoire depuis un fichier texte [ par Mornaloce ] Bonjour à tous. Voilà je vous explique mon problème. J'aimerais faire un petit programme qui permet de récupérer un mot aléatoirement dans un fichier Afficher les fréquence d'un fichier audio [ par PriMe2302 ] Bonjour, je voudrais faire un programme permettant d'afficher les fréquences d'un fichier audio. Comment faire? Merci Palindrome c++ [ par bretdu55 ] Bonjour, voila je doit faire un programme qui vérifie si le mot est un palindrome ou non, et qui retourne un booléen. Voila mon prog, si quelqu'un peu


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,920 sec (3)

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