Copier un dossier en C
Fermé
loris
-
28 août 2010 à 14:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 31 août 2010 à 21:49
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 31 août 2010 à 21:49
A voir également:
- Copier un dossier outlook dans mes documents
- Dossier appdata - Guide
- Mettre un mot de passe sur un dossier - Guide
- Créer un compte outlook - Guide
- Comment enregistrer un mail dans mes documents - Guide
- Comment copier une vidéo youtube - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
31 août 2010 à 21:03
31 août 2010 à 21:03
Bonjour,
Oublie la fonction system pour ce genre de fonction. Ce n'est absolument pas portable en plus d'être inefficace.
Source : https://c.developpez.com/faq/?page=Les-fichiers-et-les-dossiers
Cdlt,
Oublie la fonction system pour ce genre de fonction. Ce n'est absolument pas portable en plus d'être inefficace.
#include <stdio.h> int copier_fichier(char const * const source, char const * const destination) { FILE* fSrc; FILE* fDest; char buffer[512]; int NbLus; if ((fSrc = fopen(source, "rb")) == NULL) { return 1; } if ((fDest = fopen(destination, "wb")) == NULL) { fclose(fSrc); return 2; } while ((NbLus = fread(buffer, 1, 512, fSrc)) != 0) fwrite(buffer, 1, NbLus, fDest); fclose(fDest); fclose(fSrc); return 0; }
Source : https://c.developpez.com/faq/?page=Les-fichiers-et-les-dossiers
Cdlt,
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
Modifié par Pacorabanix le 28/08/2010 à 16:12
Modifié par Pacorabanix le 28/08/2010 à 16:12
dans le langage C lui même il n'y en a pas, par contre selon ton système tu peux utiliser les commandes systèmes à l'aide de :
http://www.cplusplus.com/reference/cstdlib/system/
par exemple sur windows, pour copier un dossier il y a la commande xcopy
xcopy "source" "destination" [options]
voir l'aide sur xcopy
(ouvre l'invite de commande windows avec
menu démarrer
exécuter...
tape :
cmd
clique sur ok
dans la fenêtre noire qui s'ouvre tape "help xcopy" et tu auras les instructions pour utiliser la commande.)
ça pourrait donner quelque chose comme :
string commande = "XCOPY \"C:\\Users\" \"K:\\My Vista Backup\" /D /E /C /R /I /K /Y ";
system(commande);
(dans la commande il y a des guillemets, alors il faut écrire \" au lieu de " pour pouvoir mettre les guillemets dans la chaine, de même il faut écrire \\ au lieu de \ pour les chemins de fichier)
Sinon il y a aussi des bibliothèques qui font ça (et qui font ça de manière "portable", c-à-d qui s'adaptent selon les système windows, mac unix, etc...) ) mais je n'en n'ai pas sous la main personnellement.
http://www.cplusplus.com/reference/cstdlib/system/
par exemple sur windows, pour copier un dossier il y a la commande xcopy
xcopy "source" "destination" [options]
voir l'aide sur xcopy
(ouvre l'invite de commande windows avec
menu démarrer
exécuter...
tape :
cmd
clique sur ok
dans la fenêtre noire qui s'ouvre tape "help xcopy" et tu auras les instructions pour utiliser la commande.)
ça pourrait donner quelque chose comme :
string commande = "XCOPY \"C:\\Users\" \"K:\\My Vista Backup\" /D /E /C /R /I /K /Y ";
system(commande);
(dans la commande il y a des guillemets, alors il faut écrire \" au lieu de " pour pouvoir mettre les guillemets dans la chaine, de même il faut écrire \\ au lieu de \ pour les chemins de fichier)
Sinon il y a aussi des bibliothèques qui font ça (et qui font ça de manière "portable", c-à-d qui s'adaptent selon les système windows, mac unix, etc...) ) mais je n'en n'ai pas sous la main personnellement.
31 août 2010 à 21:33
donc il faut que j'appelle ta fonction copier_fichier avec comme paramètres les chemin du dossier a copier ?
31 août 2010 à 21:49
Par exemple : copier_fichier("C:\\toto.txt","D:\\titi.txt");
Ceci créera un fichier titi.txt (dans le volume D), et sera la copie du fichier C:\toto.txt.