Bonjours tout le monde
J'ai besoin d'un petit coup de main sur un problème que je n'arrive pas à résoudre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
char **szParams = NULL;		
 
CString FID_Trie [1000];
CString szCLine = "";					
CString szpStrL = "";
 
list<CString> pStrL;
list<CString>::iterator iStrL;

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
 
//Ouverture du fichier CSV 
fileConf = fopen(::szFileName5,"r");
	if (fileConf != NULL)
	{
		while (! feof(fileConf))
		{
			 fgets(szLine,cst_iMaxLineSize,fileConf);
			 szCLine = szLine;
 
			 if(i != 0)
			 {
                          szParams = split(szLine,';');
			  szType = atoi(szParams[2]);
                          if(strlen(szCLine)>1)
			  {
			   if (strcmp(szParams[2],szType1) == 0)
			   {
                     //Ajout dans la pile le contenu de la colonne 2 du fichier CSV
			    pStrL.push_back(szParams[1]); 
                     //Ajout dans le tableau de la ligne entière non splité
			    FID_Trie[j] = szCLine; 
 			    j++;
			   }
			  }
 
			 }
			 i++;
		}
		fclose(fileConf); 
	}
//Tri la pile
pStrL.sort();
 
while (!pStrL.empty())
  {
    szpStrL = pStrL.front();
 
    for(i=0;i<j;i++)
	{
         //Ligne qui pose problème
	 szParams = split((char*)LPCTSTR(FID_Trie[i]),';');
	 itoa(i,vue,10);
         vue[1] = '\0';
     LogMessage("%s,%s,%s,%s%s"(CString)vue,szParams[0],szParams[1],szParams[2],szParams[3],szParams[4]);
	}
	pStrL.pop_front();		 
}
Enfin ma fonction split :
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
 
char** split(char* str, const char c)
{
	static char* tmp[2048];	//max 2048 colonnes
	int current = 0;
	tmp[current++] = str;
	while (*str)
	{
		if(*str == c)
		{
			*str = '\0';
			tmp[current++] = str+1;
		}
		++str;
	}
	tmp[current]=0;
	return tmp;
}
Fichier CSV :
1;1AS100;ACCES SURETE;CLA001.AS.ACC.001.
2;1AS101;ACCES SURETE;CLA001.AS.ACC.002.
3;1AS103;ACCES SURETE;CLA001.AS.ACC.003.
4;1CC100;IST SURETE;SRV001.CC.AAA.004.
5;1AS104;ACCES SURETE;CLA001.AS.ACC.005.
6;1AS102;ACCES SURETE;CLA001.AS.ACC.006.


Je vous donne les logs :


Mon problème est le suivant :
Lorsque je suis dans 'for(i=0;i<j;i++)' , ma fonction split modifie le contenu de FID_Trie alors que je ne le souhaite pas szParams = split((char*)LPCTSTR(FID_Trie[i]),';');
Pour le second élément dans ma pile, le tableau est alors null. Je n'y comprends plus rien ....

La finalité est de trier par ordre alphabétique le contenu de mon fichier CSV.