Bonjour, J'ai quelque difficulté a écrire en mode binaire.
Si mon fichier n'existe pas et que je fais la condition suivante :
Code :
filewrite.open(filename, ios_base::out | ios_base::trunc | ios_base::binary)
Le programme ne va pas écrire dans le fichier, parcontre quand le fichier existe déja, cela fonction(avec résultat étrange(ca écris le mots+ le binaire)).
:
Code :
filewrite.open(filename, ios_base::in | ios_base::out | ios_base::ate | ios_base::binary);
Voici la partie du code apres avoir vérifier si la ligne de commande est ok.(veuillez noter que c'est pour aprendre, pas trop d'utilité pour l'instant)
Code :
ofstream filewrite;
filewrite.open(filename, ios_base::in | ios_base::out | ios_base::ate | ios_base::binary); //long way
while(!filewrite.is_open())
{
filewrite.close();
cout << "File not found!"<< endl;
cout << "Do you want to create a new one ? [y/n] _\b" << flush;
char choix;
while(toupper(choix = cin.get()) != 'Y' && toupper(choix = cin.get()) != 'N')
continue;
clearline();
switch (choix)
{
case char('Y'):
case char('y'): filewrite.open(filename, ios_base::out | ios_base::trunc | ios_base::binary); //long way
break;
case char('N'):
case char('n'): return 1;
}
}
char ch;
char commentaire[10];
cout << "Entree un commentaire : ____________________\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" << flush;
int i = 0;
while((ch = cin.get()) != '\n')
{
commentaire[i] = ch;
commentaire[++i] = '\0';
}
// juste pour avoir de l'info
cout << "sizeof commentaire = " << sizeof(commentaire) << " i = " << i <<endl;
filewrite.write((char *)commentaire, sizeof(commentaire));
filewrite.close();
ifstream fileread(filename, ios_base::in | ios_base::binary);
fileread.clear();
while(fileread.read((char *)commentaire, sizeof(commentaire)))
cout << commentaire;
fileread.close();
Premierement il essait d'ouvrir le fichier en append, si ca ne fonctionne pas "is_open", il rentre dans la boucle pour le créer.
Aussi, lorsque j'apuis sur 'n', le programme plante et la librarie fstream prend 100% de mon cpu.