Equivalent de environment (vb) en c

Résolu
glennog Messages postés 337 Statut Membre -  
glennog Messages postés 337 Statut Membre -
Bonjour,

j'aimerais savoir quel est l'équivalent de la fonction n vb ( environment ) en c , qui retourne diverses valeurs ( special folder , username , directory ) et autres , merci

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Je ne connais pas VB, donc je ne sais pas ce qu'est exactement cet environnement dont tu parles, mais il ne me semble pas qu'il y ait ce genre de choses en C.

    Tout au plus tu peux récupérer les variables d'environnement système en passant un troisième argument dans ton main :

    #include "stdio.h"
    
    int main(int argc, char* argv[], char* arge[])
    {
    	int i;
    	
    	for (i=0; i<argc; i++)
    		printf("argv[%d]=%s\n",i,argv[i]);
    	
    	for (i=0; arge[i]!=NULL; i++)
    		printf("arge[%d]=%s\n",i,arge[i]);
    	
    	return 0;
    }
    La confiance n'exclut pas le contrôle
    0
  2. glennog Messages postés 337 Statut Membre 4
     
    merci de ton post, c'est exactement ce que je cherchais , mais dis moi ,
    au cas ou je veus recuperer seulement un element , par exemple arge[9] par exemple ,

    si je ne sais pas au depart à quoi le tableau no9 correspond , il n' y a t'il pas un moyen de connaitre cet element , genre une biblio disponible sur le net par exemple ?
    encore merci pour ton post
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      On ne cherches jamais à savoir ce qu'il y a dans la case 9, parce que le contenue du tableau dépendant de la configuration de chaque machine, il sera toujours différent de l'une à l'autre.
      Mais chaque variable d'environnement est un couple "clé=valeur", donc il te suffit de parcourir le tableau pour chercher la valeur correspondant à la clé que tu cherches.

      Exemple :

      #include "stdio.h"
      #include "string.h"
      
      int main(int argc, char* argv[], char* arge[])
      {
      	int i;
      	char* key = "OS=";
      	
      	for (i=0; arge[i]!=NULL; i++)
      		if (strncmp(arge[i],key,strlen(key))==0)
      			printf("%s",arge[i]);
      	
      	return 0;
      }
      0
  3. glennog Messages postés 337 Statut Membre 4
     
    ok , merci de ton astuce
    0