1 pièce(s) jointe(s)
Problème parsing fichier Windows / Mac OS / Linux
Bonjour, j'ai un problème de parsing avec mon programme sur différentes plate-formes.
J'ai une fonction qui lit un fichier texte.
Le fichier texte comporte 2 parties, séparées par un signe '$'
La premiere comporte 1 mot par ligne, et la liste de ses flexions sur la ligne suivante.
La deuxième comporte des synonymes.
Le programme fonctionne correctement à 100% sous Windows, cependant sous Mac OS il y a un petit hic:
La première partie du fichier est lue et mise en mémoire correctement.
La deuxième partie du fichier semble être lu correctment (en printant les mots 1 par 1 avec un printf les mots correspondent aux synonymes dans le fichier) cependant c'est comme s'il ne se gardait pas en mémoire
Est-ce que j'omet un détail?
Voici le code et le fichier texte en question
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| DictSyn chargerDictSyn(FILE * ptrFichier, int *err)
{
DictSyn d = initDictSyn();
char ligne[MAX_LIGNE];
char *token;
char *root = (char*) malloc(sizeof(char) * MAX_LIGNE);
int group;
int i;
if (ptrFichier == NULL)
{
*err = FNO;
return d;
}
/* lire la premiËre partie de fichier */
i = 1;
fgets(ligne, MAX_LIGNE, ptrFichier);
while (ligne[0] != '$')
{
/* casser la ligne en mots */
if (ligne != NULL)
{
token = strtok(ligne, " \n");
while (token != NULL)
{
if (i%2 != 0)
{
strcpy(root, token); /* memoriser mot racine */
d = ajoutRacine(d, token, err);
}
else
{
d = ajoutFlexion(d, root, token, err);
}
token = strtok(NULL, " \n");
}
}
i++;
fgets(ligne, MAX_LIGNE, ptrFichier);
}
/* lire deuxième partie du fichier */
while (!feof(ptrFichier))
{
fgets(ligne, MAX_LIGNE, ptrFichier);
token = strtok(ligne, " \n");
group = -1;
if(token != NULL)
{
strcpy(root,token); /* memoriser mot racine */
token = strtok(NULL, " ");
/* creer groupes synonymes */
while (token != NULL)
{
d = ajoutSynonyme(d, root, token, &group, err);
token = strtok(NULL, " \n");
}
}
}
*err = OK;
return d;
} |
Merci beaucoup.