Fonction pour Copier des Fichiers ???

Résolu
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010 - 31 août 2006 à 19:04
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 1 sept. 2006 à 14:18
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

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
31 août 2006 à 23:58
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++
3
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
1 sept. 2006 à 12:14
Lis ce qu'on te répond sinon à quoi bon répondre.
Regarde ton second param !!!

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

ciao...
BruNews, MVP VC++
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 3
31 août 2006 à 19:08
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 !"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
31 août 2006 à 23:21
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!
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
1 sept. 2006 à 10:05
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.
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
1 sept. 2006 à 12:09
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!
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
1 sept. 2006 à 12:24
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 !
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
1 sept. 2006 à 12:35
CopyDir n'existe pas.
Employer: FindFirstFile, FindNextFile, CreateDirectory, CopyFile, etc...

ciao...
BruNews, MVP VC++
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
1 sept. 2006 à 13:39
Tu peux m'expliquer rapidement avec des exemple comment ça marche?

Merci.
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
1 sept. 2006 à 13:53
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++
0
cs_lol55 Messages postés 86 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 5 décembre 2010
1 sept. 2006 à 14:11
Merci, mais j'ai une question:

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

Merci.
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
1 sept. 2006 à 14:18
bouhhh, longue histoire...

ciao...
BruNews, MVP VC++
0
Rejoignez-nous