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 :
/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 : 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)); */
/* } */
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 :

/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 :
/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 :
Si quelqu'un pouvait me mettre sur la piste, ce serait gentil.

Merci à tous.