/** * @file copieFichierBinaireEnUnBloc.cpp * Projet sem05-td-Cpp1 * @author l'équipe pédagogique * @version 1 17/01/06 * @brief corrige du TD n°5 - Exercice 1 * Structures de données et algorithmes - DUT1 Paris 5 */ #include #include using namespace std; /** * @brief Copie d'un fichier binaire en un bloc */ int main() { ifstream fSource; ofstream fCible; char nom[80]; /* Ouverture d'un flot binaire en lecture */ cout << "Saisir le nom du fichier source" << endl; cin >> nom; fSource.open(nom, ios_base::binary| ios_base::ate); // ate : a la fin du fichier if (! fSource) { cerr << "L'ouverture a echoue !" << endl; exit(1); } ifstream::pos_type taille; char * buffer; taille = fSource.tellg(); // taille (on est a la fin) buffer = new(nothrow) char [taille]; if (! buffer) { cerr << "Pas assez de memoire pour la copie"<< endl; exit (1); } fSource.seekg (0, ios::beg); // on se replace au debut fSource.read (buffer, taille); // on lit tout d'un coup ! /* Ouverture d'un flot binaire en écriture */ cout << "Saisir le nom du fichier cible" << endl; cin >> nom; fCible.open(nom, ofstream::binary); if (! fCible) { cerr << "L'ouverture a echoue !" << endl; exit(1); } fCible.write(buffer, taille); // on ecrit tout d'un coup ! if (! fCible) { cerr << "L'ecriture a echoue" << endl; exit (1); } /* fermeture des fichiers */ fSource.close(); fCible.close(); }