tester l'existence d'un fichier et plus
Bonjour,
je suis en train d'apprendre à utiliser les strings et les flux en c++ et tout ne fonctionne pas comme je voudrais. Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <iostream>
#include <fstream>
#include <string>
using namespace std;
char text[100];
bool is_readable(const string &file) //indique si un fichier est lisible (et donc si il existe)
{
ifstream fichier(file.c_str());
return !fichier.fail();
}
void main()
{
string answer;
string output_file("fichier.dat" );
ofstream output(output_file.c_str());
if(is_readable(output_file.c_str()))
{
cout << output_file << " exists. Do you want to erase this file (type \"erase\" ) or to create a new one (type \"create\" )?" << endl;
cin >> answer;
while (strcmp(answer.c_str(),"erase" )==1 || strcmp(answer.c_str(),"create" )==1) //strcmp renvoie 1 quand les chaines sont différentes
{
cout << "Choice is incorrect, type \"erase\" or \"create\"." << endl;
cout << answer << endl;
cin >> answer;
}
if(strcmp(answer.c_str(),"erase" )==0)
{
ofstream output(output_file.c_str());
}
if(strcmp(answer.c_str(),"create" )==0)
{
cout << "Type the new file name" << endl;
cin >> output_file;
output.close();
ofstream output(output_file.c_str());
}
}
}//fin de main |
En gros, je voudrais tester si le fichier "fichier.dat" existe déjà et si c'est le cas permettre à l'utilisateur de l'écraser ou de proposer un nouveau nom. Qu'est ce que je fais mal ?