Problème sur un char * pour redéfinir
Bonjour,
Je rencontre un problème inattendu sans doute et surement par manque de connaissance, donc voilà mon problème :
J'ai une fonction Url_LinksSave qui est à l'intérieur d'une boucle while.
Je déclare et définie dans ma fonction Url_LinksSave une chaine *pNumeroFileTxt = "000";
Je modifie cette chaîne (toujours dans la même fonction) dans une boucle for et quand la boucle se termine pNumeroFileTxt vaut "099".
Avant de sortir de ma fonction je redéfinie pNumeroFileTxt à "000".
Mais quand je rentre à nouveau dans ma fonction Url_LinksSave j'ai remarqué avec horreur que le pNumeroFileTxt n'avait pas changé et était toujours à "099" et c'est ici que je ne comprends pas pourquoi :
1) quand le programme lit la déclaration et la définition chaine *pNumeroFileTxt = "000"; pourquoi il ne me redéfini pas la chaîne à "000".
2) quand le programme lit pNumeroFileTxt = "000" à la fin de ma fonction juste avant de sortir, pourquoi il ne fait pas la redéfinition.
J'ai encore dû saper quelque chose sur le cours sur les chaînes de caractères LOL :aie:!
Voici mon code :
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
void Url_LinksSave(void)
{
if(gPlaylist.nLink_Nb == 0)
{
printf("Aucun lien trouvé.\n");
}
else
{
s32 i = 0, ii = 0;
static s32 nNumeroFile=0; // Pour le n° du fichier.
char pFilenameTxt[FILENAME_OutputLg+1];
char *pNumeroFileTxt = "000"; // La ligne qui pose problème.
char *pExtensionFile = ".txt";
char *pStrEnd = "\r\n";
strcpy(pFilenameTxt, "Links000.txt");
for(i = 0; i <= gPlaylist.nLink_Nb; i++)
{
// Ecriture des liens sur plusieurs fichiers par lot.
if( ! ii % NB_LINKS_BY_FILE_Output)
{
if((gFilename.pFile = fopen(pFilenameTxt, "w")) != NULL){}
else
{
fprintf("stderr, Unable to save %s\n", pFilenameTxt);
exit(1);
}
}
// On écrit les liens dans le fichier.
fwrite(gpLinksUrl[i].pLinkURL, strlen(gpLinksUrl[i].pLinkURL), 1, gFilename.pFile);
// Saut de ligne.
if(ii < NB_LINKS_BY_FILE_Output-1 && i < gPlaylist.nLink_Nb)
fwrite(pStrEnd, sizeof(*pStrEnd), strlen(pStrEnd), gFilename.pFile);
//Si on est arrivé au nombre de liens par fichier.
if(++ii > NB_LINKS_BY_FILE_Output-1)// Si nb de liens < nb de liens par lot.
{
fclose(gFilename.pFile);
MyItoA(++nNumeroFile, pNumeroFileTxt);
strcpy(pFilenameTxt, FILENAME_Save);
strcat(pFilenameTxt, pNumeroFileTxt);
strcat(pFilenameTxt, pExtensionFile);
ii=0;
}
}
fclose(gFilename.pFile);
nNumeroFile = 0; pNumeroFileTxt = "000";
}
} |
Est-ce que je devrais modifier ma chaine caractère par caractère, est-ce que la nouvelle chaîne que je définie à la fin de ma fonction est à une autre adresse ?