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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?