Fonction pour Copier des Fichiers ???

Résolu
Messages postés
86
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
5 décembre 2010
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,

je cherche une fonction en C/C++ pour Copier des fichiers.

J'ai déjà trouvé la fonction CopyFile(); mais lorsque je compile (avec Visual C++), j'obtiens l'erreur suivante:

error C2664: 'CopyFileW' : impossible de convertir le paramètre 1 de 'const char [23]' en 'LPCWSTR'

Pourquoi

Merci de votre Aide!

13 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Laisse tout en texte brut, on n'est pas aux "Arts Déco", pas besoin de mise en page.

Fais comme je t'ai dit plus haut:
TCHAR nom[] = TEXT("C:\\fichier.txt");
CopyFile(nom, TEXT("C:\\dossier\"), TRUE);

Sinon règle ton compilo en ANSI (multi byte character set).

PS) Ton 2eme param de CopyFile doit être un nom de fichier mais pas de dossier.

ciao...
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Lis ce qu'on te répond sinon à quoi bon répondre.
Regarde ton second param !!!

ciao...
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Tu compiles en UNICODE, faut bosser avec du TCHAR et non du char.

ciao...
BruNews, MVP VC++
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Salut lol55,

CopyFile() est la bonne fonction, sauf que tu ne l'utilises pas comme il faut.
Il  faut que le premier argument de la fonction soit un pointeur sur un char, soit un char*.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
86
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
5 décembre 2010

Yoyo, tu peux me donner un exemple parcqu'avec ce code:
char

* nom =
"C:\\fichier.txt";CopyFile(nom,"C:\\dossier\" , TRUE);

J'obtiens toujours la même erreur...

Merci!
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
10
Ou alors remplace tes char en wchar_t et rajoute des L devant tes chaines de caractères, mais je préfére quand même utiliser les TCHAR.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
Messages postés
86
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
5 décembre 2010

Merci , j'ai essayé avec ton exemple, j'ai pas d'erreurs à la compilation ni à l'execution, tout marche bien sauf que rien n'est copié! ^^
J'ai aussi essayé ça:

TCHAR source[] = TEXT(

"C:\\test.txt");TCHAR destination[] = TEXT(

"C:\\Dossier\");CopyFile(source, destination, TRUE);

Mais rien n'est Copier...

Pourquoi ?

Merci!
Messages postés
86
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
5 décembre 2010

Désolé, j'avais pas lu le PS...

J'ai donc fais comme tu m'as dis et ça Marche!!!

MERCI!

TCHAR source[] = TEXT(

"C:\\test.txt");TCHAR destination[] = TEXT(

"C:\\Dossier\\copie_test.txt");CopyFile(source, destination, TRUE);

Le contenu de "test.txt" est bien copier dans "copie_test.txt" !!!

Et comment fait-on pour copier un dossier (tout le contenu) ???

J'ai trouvé la fonction CopyDir mais il me dit:

error C3861: 'CopyDir' : identificateur introuvable

J'ai du oublier d'inclure quelque chose au début; mais quel est le nom de ce .h ???

Merci !
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
CopyDir n'existe pas.
Employer: FindFirstFile, FindNextFile, CreateDirectory, CopyFile, etc...

ciao...
BruNews, MVP VC++
Messages postés
86
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
5 décembre 2010

Tu peux m'expliquer rapidement avec des exemple comment ça marche?

Merci.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
COPIEUR DE DOSSIERS (WIN32)
http://www.cppfrance.com/code.aspx?id=18599

Inutile d'employer la bnlib2c.dll de la source, récup les fonctions utilisées dans mes autres siources et mets les direct dans le code du prog.

Faudrait faire un effort de recherche, voir "zone de recherche" en haut de cette page ou mettre la CSBar (menu "téléchargements" à gauche).

ciao...
BruNews, MVP VC++
Messages postés
86
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
5 décembre 2010

Merci, mais j'ai une question:

Où avez-vous appris à programmer en API ???

Merci.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
bouhhh, longue histoire...

ciao...
BruNews, MVP VC++