Soyez le premier à donner votre avis sur cette source.
Vue 5 729 fois - Téléchargée 150 fois
#include <process.h> #include <iostream.h> // pour la fonction exit() #include <fstream.h> // pour ifstream et ofstream #include <conio.h> main(int argc, char* argv[]) // arguments de la ligne de commande { char ch; if (argc != 3) // testeur d'args { cerr << "Operation de sauvegarde en cours !\n"; exit(-1); } ifstream source; // sources io stream ofstream dest; source.open(argv[1],ios::nocreate); if (!source)//Si pas de source , donc rade :) ! { cerr << "Desole , impossible de sauvegarder!" << argv[1] << " \n"; exit(-1); }//Message d'erreur ! dest.open(argv[2]); // generation du dest , si celui si n'existait pas // opu effacé au cas contraire ! if (!dest) { cerr << "Erreur d'execution ! Fichier source obsolete " << argv[2] << "Ecriture impossible\n"; exit(-1); } while (dest && source.get(ch)) dest.put(ch); cout << "Operation achevée\n"; source.close(); // Fermeture des ios! dest.close(); getch() }
extern "C"
{
_CRTIMP int __cdecl _getch(void);
}
En ajoutant ces lignes, _getch() est utilisable comme si on avait fait
#include <conio.h>
par ex, comment peux tu quitter le programme depuis une fonction sans exit? avec un return tu ne fait que quitter la fonction, donc ca marche uniquement quand c'est la fonction main
a la fin du prog on peut faire cin.get(), l'equivalent d'un getchar de la stdio
un bonne exemple pour les débutant avec les fstreams...
Mais en effet comme tu utilises le C++ (les fstream de la STL!) il est mieux d'inclure les fichier standard C++, tel que <fstream>, ! Malheureusement en faisant cela les utilitées du nom d'espace std ne sont qu'accessible avec le préfixe std::, alors tu peux soit faire:
...
using std::cout;
using std::cerr;
...
Mais ce qui n'est pas très utile vu que tu utilises beaucoup de la STL... Alors pour te faciliter la tâche tu peux utiliser:
using namespace std;
ce qui va te permettre d'utiliser toutes les utilités du nom d'espace std!
Ensuite, pour la fonction main( ), ne surtout pas la déclarer de cette manière, il est d'ailleurs rare que les compilos accepte ta façon de la faire alors je te propose:
int main( int argc, char *argv[] )
{
...
// return 0;
}
Je met le return 0; en commentaire car le pur C++ ne nécessite plus de cette ligne vu que la fonction main() retourne automatiquement la valeur 0 en C++! mais il n'est pas interdit, juste inutile... :)
Ensuite pour bien utiliser le standard C++, on va bouger le process.h et le conio.h qui ne sont pas du tout standard!
Alors tu as déclarer process.h pour utiliser la fonction exit(), comme je te l'ai dit plus haut il est mieux de déclarer INT main( ); ce qui va également te permettre de remplacer exit( -1 ); par un simple return -1; à la position voulue!
Et enfin pour remplacer getch( ) de conio.h tu peux tout simplement mettre un:
cin >> ch;
à la fin ce qui va faire patienter le programme :)
Bon voilà ça c'était pour les quelques éclairements, sinon le code il est pas mal!!
Bonne prog
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.