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 :
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./usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Voici mon code :
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 :
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 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)); */ /* } */
Par contre, lorsque j'utilise cette même fonction dans un fichier différent, il me renvoie ceci :/usr/local/bin/ /usr/bin/ /bin/ /usr/local/games/ /usr/game/
Il ne me met pas les '/' à la fin de chaque répertoire.../usr/local/bin /usr/bin /bin /usr/local/games /usr/game/
Je comprends vraiment pas d'où vient mon soucis, sachant que dans l'autre fichier, je fais juste un :
Si quelqu'un pouvait me mettre sur la piste, ce serait gentil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part puts(my_parse(envp));
Merci à tous.
Partager