[Parsing] Comportement bizarre, variable $PATH
Bonjour à tous,
Voilà, j'ai un petit soucis avec un programme.
En fait, j'ai une partie "parsing", représenté par la fonction my_parse, qui récupère les valeurs des variables d'environnement de mon système. Celle que j'ai fait, récupère la variable $PATH, qui se présente ainsi :
Citation:
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Le truc, c'est qu'il me fallait chaque répertoire, que je remplace le ':' par un espace, et que j'ajoute un '/' à la fin de chaque répertoire.
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
| char *my_parse(char **envp)
{
int i;
int j;
int k;
char *var;
i = 0;
j = 0;
k = 0;
var = malloc(5000);
while (envp[i] != NULL && my_strncmp(envp[i], "PATH", 4) != 0)
i++;
if (envp[i] == NULL)
return (0);
j += 5;
while (envp[i][j] != '\n' && envp[i][j])
{
if (envp[i][j] == ':')
{
envp[i][j] = ' ';
var[k++] = '/';
}
var[k++] = envp[i][j];
j++;
}
var[k-1] = '/';
return (var);
}
/* int main(int argc, char **argv, char **envp) */
/* { */
/* puts(my_parse(envp)); */
/* } */ |
Quand je décommente mon main dans ce programme, que je compile, et que je le lance, il me renvoie bien ce que je veux, c'est-à-dire :
Citation:
/usr/local/bin/ /usr/bin/ /bin/ /usr/local/games/ /usr/game/
Par contre, lorsque j'utilise cette même fonction dans un fichier différent, il me renvoie ceci :
Citation:
/usr/local/bin /usr/bin /bin /usr/local/games /usr/game/
Il ne me met pas les '/' à la fin de chaque répertoire...
Je comprends vraiment pas d'où vient mon soucis, sachant que dans l'autre fichier, je fais juste un :
Code:
puts(my_parse(envp));
Si quelqu'un pouvait me mettre sur la piste, ce serait gentil.
Merci à tous.