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 !

Voici mon code :

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
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 ?