Bonjour,
je réalise un petit programme en C avec Win Api 32. J'essaie de remplir un structure SHFILEOPSTRUCT pour utiliser la fonction SHFileOperation qui entre autres copie des fichiers.
Dans une fonction je fais un appel de sous fonction pour trouver l'adresse du dossier à copier :
Voici la fonction appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 shf.pFrom=NULL; shf.pFrom=definirAdresseOrigine(p_gadget->dossier[i],p_action->user); printf("%s\n",shf.pFrom);//vérification dans une console si l'adresse est bien définie
Mon problème :
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
30 //-------------------------------------------------------------------------- // Trouver l'adresse d'un dossier à sauvegarder //-------------------------------------------------------------------------- LPCTSTR definirAdresseOrigine(TCHAR *dossier,TCHAR *user) { TCHAR adresse[256]={0}; strcat(adresse,"C:\\DOCUME~1\\"); strcat(adresse,user); strcat(adresse,"\\"); strcat(adresse,dossier); strcat(adresse,"\\*\0"); // printf("adresse:%s\n",adresse); //vérification console return (LPCTSTR)adresse; }
Si je n'active pas la ligne du printf de la sous fonction l'adresse retournée est fausse. Dans la console j'obtiens :
Alors que si j'active le printf de la sous fonction (alors qu'à mes yeux normalement ça ne devrait rien changer au résultat), mon adresse est juste et j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C:\DOCUME~1
Petite pécision, j'appelle ma sous fonction plusieurs fois dans une boucle, et l'adresse recherchée n'est fausse qu'au premier passage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C:\DOCUME~1\user\dossier\*
Ma question : pourquoi je n'obtiens pas le même résultat avec ou sans printf et surtout comment faire pour ne pas user de ce subterfuge..j'aimerais avoir un code le plus propre possible et aussi le comprendre un minimum.
Merci pour vos réponses.
Partager