Bonjour
C'est avec un peu de désespoir que je viens chercher une réponse à une question apparemment triviale mais qui me torture depuis plusieurs heures.
J'ai un code ultra-simple, destiné à ouvrir un ficher en utilisant CREATEFILE.
Note : je sais qu'il y a d'autres méthodes. Mon objectif est d'utiliser CREATEFILE.
Lorsque je fais :
1 2 3
| hOutFile = CreateFile( "test.txt",
GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL); |
Impeccable, ça marche.
si je fais
1 2 3
| hOutFile = CreateFile( filename,
GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL); |
plantage...
L'unique différence ? filename.
Filename est défini comme suit :
1 2 3
| char * filename;
filename = (char*) malloc(10) |
et là plein de méthodes possibles pour remplir l'espace mémoire.
par exemple :
1 2
| strcpy(filename,"test.txt");
strcpy[8]=0; |
J'ai aussi tenté le :
même résultat.
Bref, quelle que soit la méthode, ça plante.
J'ai aussi des
printf("%s\n",filename");
dans tous les coins pour vérifier l'état de la variable, et aucun problème, elle est clean.
Là où ça devient fou, c'est que j'ai cherché des exemples, des codes sur le NET; et TOUS les exemples utilisent TOUJOURS des noms fixés EN DUR dans le code, comme le premier exemple. Mais c'est incroyable ça, c'est vraiment impossible de passer un argument runtime à cette fonction ??
Bref, là j'ai plus de solutions; à part manger le PC...
Partager