Problème avec ifstream

slashparof Messages postés 4 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 17 avril 2004 - 17 avril 2004 à 13:16
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 - 19 avril 2004 à 12:30
Voilà mon problème:
Je fais un prog en C++ qui est censé lire dans un fichier et trouver certaines information. Pour améliorer la lisibilité de mon code, je l'ai séparé en fonctions. Lorsque je compile (sous VC++) je n'ai aucune erreurs et aucun warning, malgré tout le programme plante.
Voici une partie de mon code:
(D'avance merci à tout ceux qui veulent bien essayer de capter le problème)

#include
#include <fstream>
#include <string>

using namespace std;
// véfrifie sur il n'y a pas de conflit avec le fichier
// retourne le flot d'entrée si tout est OK
ifstream fileOK(string filename)
{
// ouvre le fichier et l'associe au flot "file"
ifstream file(filename.c_str());

if (file.fail()) // s'il y a un problème
{
cerr << "Erreur : impossible de lire le fichier"
<< " de configuration " << filename << endl;
file.close(); // ferme le fichier

return 0;
}
// si tout est OK
else
return file;
}

//------------------------------------------------

/* FONCTION PRINCIPALE */
int main()
{
string filename;
string key;
ifstream file;

cout << "Entrez le nom du fichier à analyser : ";
cin >> filename;

file = fileOK(filename); // ca merde a ce niveau

cout << "Entrez la clef à rechercher : ";
cin >> key;

return 0;
}

2 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 avril 2004 à 14:27
#include
#include <fstream>
#include <string>

using namespace std;
// véfrifie sur il n'y a pas de conflit avec le fichier
// retourne le flot d'entrée si tout est OK
bool fileOK(string filename, ifstream& file)
{
// ouvre le fichier et l'associe au flot "file"
file=ifstream(filename.c_str());

if (file.fail()) // s'il y a un problème
{
cerr << "Erreur : impossible de lire le fichier"
<< " de configuration " << filename << endl;
file.close(); // ferme le fichier

return false;
}
// si tout est OK
return true;
}

//------------------------------------------------

/* FONCTION PRINCIPALE */
int main()
{
string filename;
string key;
ifstream file;

cout << "Entrez le nom du fichier à analyser : ";
cin >> filename;

fileOK(filename,file); // ca merde a ce niveau

cout << "Entrez la clef à rechercher : ";
cin >> key;

return 0;
}
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
19 avril 2004 à 12:30
Il n'a pas trop d'intéret à une telle fonction.

je ne vois pas en quoi ces deux lignes deux codes
ne sont pas lisibles.

  ifstream file( filename.c_str() );
  if ( !file )  { // Erreur d'ouverture en lecture du fichier
     return; // ou gestion d'erreur appropriée
  }
0
Rejoignez-nous