Comment imprimer les variables d'environnement dans un programme C en utilisant "environ".Impression des variables d'environnement à l'aide de
extern char ** environ
Comment imprimer les variables d'environnement dans un programme C en utilisant "environ".Impression des variables d'environnement à l'aide de
extern char ** environ
#include <unistd.h>
#include <stdio.h>
extern char **environ;
//...
int i = 0;
while(environ[i]) {
printf("%s\n", environ[i++]); // prints in form of "variable=value"
}
Voulez-vous dire
int main(int argc, char **argv, char **envp)
{
while(*envp!=null) {
printf("%s\n", *envp);
envp++;
}
return 0;
}
Non, 'extern char ** environ;' est la norme POSIX. Cette signature pour 'main' est complètement non-standard. –
Vous avez entièrement raison. Toutefois. C'est pourquoi j'ai demandé. Il compile et s'exécute correctement sous gcc sous Solaris 9 et 10, sous cc sur HPUX 10i, 11.0 et 11i. Il a également compilé et fonctionné sur les anciennes versions de DEC Unix et DGUX. Le point étant que les gens obtiennent ** environ et l'int int (int, char **, char *) confus. Je n'ai pas mon K & R à vérifier ou je le réclamerais aussi. Que dit votre K & R? –
exactement ce que je besoin? Donc environ est en fait un tableau de pointeurs de caractères non? et chaque pointeur de caractère dans le tableau pointe vers une variable d'environnement droite? –
Chaque pointeur pointe vers une chaîne (ouais, tableau de caractères) de la forme "variable = valeur". La dernière entrée est un null-pointeur, qui termine la boucle ci-dessus. – sje397
Merci beaucoup :) .. Vous commentez était si informatif. –