Test d'existence de fichier c++
Charles
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai écrit un programme c++ pendant lequel je teste l'existence d'un fichier à l'aide de la fonction "is_readable". Lorsque j'appelle la fonction depuis le main et que le fichier existe, la fonction me retourne bien la valeur true mais quand je l'appelle depuis void lecture, la fonction "is readable" me renvoie la valeur false alors que le fichier existe toujours... Pourquoi?
Merci de vos réponses
Ci dessous le code:
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
using namespace std;
bool is_readable( const std::string file )
{
std::ifstream fichier( file.c_str() );
return !fichier.fail();
}
void lecture(std::string name_file, int nline, int& npoints);
int main(void)
{
string name_file;
name_file="parameters.txt";
if ( is_readable(name_file))
{
cout << "Reading the file " << name_file;
cout << "\n";
}
else
{
cout << "Error: Cannot open the file " << name_file << endl;
exit(0);
}
lecture(name_file,ExpFileLine[i],nexppoints[i]);
return 0;
}
void lecture(std::string name_file, int nline, int& npoints)
{
using std::cout;
int count = 0;
if ( is_readable(name_file))
{
cout << "Reading the file " << name_file;
cout << "\n";
std::ifstream fichier( name_file.c_str() );
...
}
else
{
cout << "Error: Cannot open the file " << name_file << endl;
exit(0);
}
}
J'ai écrit un programme c++ pendant lequel je teste l'existence d'un fichier à l'aide de la fonction "is_readable". Lorsque j'appelle la fonction depuis le main et que le fichier existe, la fonction me retourne bien la valeur true mais quand je l'appelle depuis void lecture, la fonction "is readable" me renvoie la valeur false alors que le fichier existe toujours... Pourquoi?
Merci de vos réponses
Ci dessous le code:
#include <string>
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
using namespace std;
bool is_readable( const std::string file )
{
std::ifstream fichier( file.c_str() );
return !fichier.fail();
}
void lecture(std::string name_file, int nline, int& npoints);
int main(void)
{
string name_file;
name_file="parameters.txt";
if ( is_readable(name_file))
{
cout << "Reading the file " << name_file;
cout << "\n";
}
else
{
cout << "Error: Cannot open the file " << name_file << endl;
exit(0);
}
lecture(name_file,ExpFileLine[i],nexppoints[i]);
return 0;
}
void lecture(std::string name_file, int nline, int& npoints)
{
using std::cout;
int count = 0;
if ( is_readable(name_file))
{
cout << "Reading the file " << name_file;
cout << "\n";
std::ifstream fichier( name_file.c_str() );
...
}
else
{
cout << "Error: Cannot open the file " << name_file << endl;
exit(0);
}
}
A voir également:
- Test d'existence de fichier c++
- Test performance pc - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
n'empêche que j'avais raison. Ce lien est plus clair :
https://en.cppreference.com/w/cpp/io/basic_ios/fail
fail() ne donne d'information que si tu tente une opération sur le fichier. Et là tu ne fait rien, tu ne tente même pas de l'ouvrir. Donc, il est possible que le comportement de fail soit indéterminé dans ce cas là (la doc n'en parle pas).
Henri, tu n'as pas compris l'esprit des forum, le but n'est pas d'arriver avec une solution toute faîte à la manière d'un prof, mais d'apporter un aide, un nouvelle idée pour avancer. Et toi, tu rentre dans la catégorie des péteux qui descendent tout en fleche sans jamais rien construire.
Les critiques constructives sont les bien venus, mais là, tu n'apporte rien !
https://en.cppreference.com/w/cpp/io/basic_ios/fail
fail() ne donne d'information que si tu tente une opération sur le fichier. Et là tu ne fait rien, tu ne tente même pas de l'ouvrir. Donc, il est possible que le comportement de fail soit indéterminé dans ce cas là (la doc n'en parle pas).
Henri, tu n'as pas compris l'esprit des forum, le but n'est pas d'arriver avec une solution toute faîte à la manière d'un prof, mais d'apporter un aide, un nouvelle idée pour avancer. Et toi, tu rentre dans la catégorie des péteux qui descendent tout en fleche sans jamais rien construire.
Les critiques constructives sont les bien venus, mais là, tu n'apporte rien !
Salut.
Je ne suis pas sur que ça soit la bonne manière d'utiliser fail et detester un fichier.
à mon avis, il faut mieux tester l'ouverture.
http://www.cplusplus.com/reference/ios/ios/fail/
Je ne suis pas sur que ça soit la bonne manière d'utiliser fail et detester un fichier.
à mon avis, il faut mieux tester l'ouverture.
http://www.cplusplus.com/reference/ios/ios/fail/