cours/C obtenir une variable d'environnement.md
oscar.plaisant@icloud.com a2ee0fa5ca from github to this gitea
2023-10-23 23:09:51 +02:00

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