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++);
 | |
| }
 | |
| ``` |