Exercice 120
Énoncé
Écrire un programme qui enregistre (sous forme « binaire », et non pas formatée),
dans un fichier de nom fourni par l’utilisateur, une suite de nombres entiers fournis
sur l’entrée standard. On conviendra que l’utilisateur fournira la valeur 0 (qui ne sera
pas enregistrée dans le fichier) pour préciser qu’il n’a plus d’entiers à entrer.
Si nomfich désigne une chaîne de caractères, la déclaration :
ofstream sortie (nomfich, ios::out) ;
permet de créer un flot de nom sortie, de l’associer au fichier dont le nom figure dans
nomfich et d’ouvrir ce fichier en écriture.
L’écriture dans le fichier en question se fera par la fonction write, appliquée au flot
sortie.
Voici le programme demandé :
const int LGMAX = 20 ;
#include // pour exit
#include
#include
#include
using namespace std ;
main()
{
char nomfich [LGMAX+1] ;
int n ;
cout << "nom du fichier à créer : " ;
cin >> setw (LGMAX) >> nomfich ;
ofstream sortie (nomfich, ios::out) ;
if (!sortie) { cout << "création impossible \n" ;
exit (1) ;
}
do
{ cout << "donnez un entier : " ;
cin >> n ;
if (n) sortie.write ((char *)&n, sizeof(int) ) ;
}
while (n && sortie) ;
sortie.close () ;
}
Notez que if (!sortie) est équivalent à if (!sortie.good()) et que while (n && sortie) est
équivalent à while (n && sortie.good()).
297
Énoncé
Écrire un programme qui enregistre (sous forme « binaire », et non pas formatée),
dans un fichier de nom fourni par l’utilisateur, une suite de nombres entiers fournis
sur l’entrée standard. On conviendra que l’utilisateur fournira la valeur 0 (qui ne sera
pas enregistrée dans le fichier) pour préciser qu’il n’a plus d’entiers à entrer.
Si nomfich désigne une chaîne de caractères, la déclaration :
ofstream sortie (nomfich, ios::out) ;
permet de créer un flot de nom sortie, de l’associer au fichier dont le nom figure dans
nomfich et d’ouvrir ce fichier en écriture.
L’écriture dans le fichier en question se fera par la fonction write, appliquée au flot
sortie.
Voici le programme demandé :
const int LGMAX = 20 ;
#include
#include
#include
#include
using namespace std ;
main()
{
char nomfich [LGMAX+1] ;
int n ;
cout << "nom du fichier à créer : " ;
cin >> setw (LGMAX) >> nomfich ;
ofstream sortie (nomfich, ios::out) ;
if (!sortie) { cout << "création impossible \n" ;
exit (1) ;
}
do
{ cout << "donnez un entier : " ;
cin >> n ;
if (n) sortie.write ((char *)&n, sizeof(int) ) ;
}
while (n && sortie) ;
sortie.close () ;
}
Notez que if (!sortie) est équivalent à if (!sortie.good()) et que while (n && sortie) est
équivalent à while (n && sortie.good()).
297
