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;
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
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(); }
Fichier CSV :
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; }
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.
Partager