SalutJ à tous, j'ai un petit souci sur un corrigé de cours qui ne fonctionne pas. Le but était de rentrer des nombres entiers dans un fichier binaire puis en choisissant la position du nombre à l'aide de seekg() de retrouver ce nombre; tout ceci en utilisant la classe fstream. Mais voilà des que je rentre le nom du fichier j'ai une erreur; Le programme fonctionne en retirant l'argument "ios::binary" dans la declaration de "fichierInOut" mais voila il faut que ce soit un fichier binaire. Comment rectifier le corrigé pour que cela fonctionne? (Je travaille sous visual C++)
Merci, le prog:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<fstream>
#include<stdlib.h>//pour la fonction exit
using namespace std;
int main(int argc,char*argv[])
{
try
{
char nomfichier[21];
int n,i=0;
long numero=0;
printf("Donner le nom du fichier a creer: ");
cin>>nomfichier;
fstream fichierInOut(nomfichier,ios::in|ios::out|ios::binary);
if(fichierInOut.fail()) throw "Erreur d'ouverture fichier";
do
{
cout<<"Entrer un entier en position "<<i++<<" (0 pour finir): ";
cin>>n;
if(n!=0) fichierInOut.write((char*)&n,sizeof(int));
}while(n);
while(numero>=0)
{
cout<<"\nnumero de l'entier recherche: ";
cin>>numero;
fichierInOut.seekg(sizeof(int)*numero,ios_base::beg);
if (fichierInOut.read((char*)&n,sizeof(int)))
cout<<"La valeur lue est: "<<n<<endl;
else throw "Erreur de lecture";
}
fichierInOut.close();
}
catch(char *erreur)
{
cout<<erreur<<endl;
getch();
exit (1);
}
getch();
return 0;
}