79 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
alias: [ "C primitive getenv", "getenv" ]
 | 
						|
---
 | 
						|
up::[[C primitives système]], [[C variable d'environnement]]
 | 
						|
title:: "`getenv` pour obtenir la valeur d'une [[variables d'environnement|variable d'environnement]]"
 | 
						|
#s/informatique/unix 
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
# Avec la fonction `getenv`
 | 
						|
 | 
						|
 - fonction `getenv` de la librairie standard
 | 
						|
 - permet d'obtenir directement la valeur de la variable donnée en argument
 | 
						|
 - retourne `NULL` si la variable n'est **pas définie**
 | 
						|
 | 
						|
signature de la fonction :
 | 
						|
```c
 | 
						|
char * getenv(const char *nom_variable)
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
## Exemple
 | 
						|
```C
 | 
						|
#include<stdio.h>
 | 
						|
#include<stdlib.h>
 | 
						|
void main (int argc, char *argv[], char **arge) {
 | 
						|
 | 
						|
    char *VAR;
 | 
						|
    if ( (VAR = getenv("PATH")) != NULL )
 | 
						|
        fprintf(stdout, "Valeur PATH = %s", VAR);
 | 
						|
    else
 | 
						|
        fprintf(stderr, "VARIABLE PATH NON DEFINIE !");
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
# Avec l'argument `arge` dans `main`
 | 
						|
 | 
						|
On utilise le tableau `arge`, qui est donné en argument par défaut est un tableau :
 | 
						|
 - chaque élément est un pointeur
 | 
						|
     - vers une chaîne de caractère de la forme :
 | 
						|
         - `nom_de_la_variable=valeur_de_la_variable`
 | 
						|
         - pour chaque 
 | 
						|
 | 
						|
 | 
						|
## Exemple
 | 
						|
```C
 | 
						|
#include<stdio.h>
 | 
						|
 | 
						|
int main (int argc, char *argv[], char **arge) {
 | 
						|
    int i;
 | 
						|
    for ( i=0; arge[i] != NULL; i++) {
 | 
						|
        puts(arge[i]);
 | 
						|
    }
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
# Avec la variable `environ`
 | 
						|
 | 
						|
 - même tableau que `arge`
 | 
						|
 - peut être défini comme une variable globale
 | 
						|
     - ici, on le re-définit localement, pour ne pas modifier la variable globalement
 | 
						|
 | 
						|
## Exemple
 | 
						|
```C
 | 
						|
#include<stdio.h>
 | 
						|
 | 
						|
extern char **environ;
 | 
						|
 | 
						|
int main (int argc, char *argv[], char **arge) {
 | 
						|
 | 
						|
    extern char **environ;
 | 
						|
    char **env;
 | 
						|
    env = environ; /* préserve environ */
 | 
						|
    
 | 
						|
    while ( *env != NULL )
 | 
						|
        puts( *env++);
 | 
						|
}
 | 
						|
``` |