Bonjour à tous,

J'essaie de copier un fichier avec fopen(). J'ai donc utilisé le code source de la faq:

http://c.developpez.com/faq/?page=fi...ICHIERS_copier

Je l'ai un peu modifier pour que ça donne ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
int CopyAFile(char const * const source, char const * const destination)
{
    FILE* fSrc = NULL;
    FILE* fDest = NULL;
    char buffer[512];
    int NbLu;
 
    if ((fSrc = fopen(source, "rb")) == NULL)
	{
		printf("Cannot open source file: %s\n", source);
		exit(1);
	}
 
    if ((fDest = fopen(destination, "wb")) == NULL)
    {
		printf("Cannot open dstination file: %s\n", destination);
		fclose(fSrc);
        exit(1);
    }
 
    while ((NbLu=fread(buffer, 1, 512, fSrc)) != 0)
        fwrite(buffer, 1, NbLu, fDest);
 
    fclose(fDest);
    fclose(fSrc);
 
    return 0;
}
Et je l'utilise comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
CHAR SourceFile[450+1] = "C:\\BETtest\\test.xml";
 
printf("\nSourceFile: %s\n", SourceFile);
CHAR DestinationFile[450+1] = "C:\\BETest\\test\\test.xml";
 
printf("\nDestinationFile: %s\n\n", DestinationFile);
 
	CopyAFile(SourceFile, DestinationFile);
Printf me renvoie bien les bon chemins, sans les doubles antislash, mais la fonction CopyAFile echoue sur le premier fopen().

Il y a moyen de savoir pourquoi il ne peut pas ouvrir le fichier? Il existe bien, et il n'est pas verrouillé.

D'avance merci

Ps: Le but est de pouvoir par la suite copier un fichier à partir d'un snapshot, avec un chemin du genre \?\\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Documents and Settings\blabla\monfichierverrouillé

Apparemment, la fonction CopyFile() des lib Crosoft n'aime pas trop ce genre de path...