56 votes

Définir des variables d'environnement local en C ++

Comment définir une variable d'environnement en C ++?

  • Ils n'ont pas besoin de persister après l'exécution du programme
  • Ils doivent seulement être visibles dans le processus actuel
  • Préférence pour la plate-forme indépendante, mais pour mon problème, il suffit de travailler sur Win32 / 64

Merci

64voto

alamar Points 6376
NOM

 putenv - modifier ou ajouter une variable d'environnement

SYNOPSIS

 #include <stdlib.h>

 int putenv(char *string);

DESCRIPTION
 Le putenv() la fonction ajoute ou modifie la valeur de l'environnement
 les variables. La chaîne de l'argument est de la forme nom=valeur. Si le nom ne
 existe pas déjà dans l'environnement, alors la chaîne est ajoutée à la
 de l'environnement. Si le nom n'existe pas, alors la valeur de nom dans le
 l'environnement est modifiée de la valeur. La chaîne de caractères pointée par la chaîne devient
 une partie de l'environnement, afin de modifier la chaîne de modifications de l'environnement.

Sur Win32, il est appelé _putenv je crois.

Voir Lesetenvironmentvariable aussi, si vous êtes un fan de long et laid noms de fonction.

4voto

JohnMcG Points 5062

Je ne suis pas des variables d'environnement positives, c'est ce dont vous avez besoin, car elles ne seront pas utilisées en dehors de cette exécution du programme. Pas besoin d'engager le système d'exploitation.

Il vaut mieux avoir une classe singleton ou un espace de noms contenant toutes ces valeurs et les initialiser lorsque vous démarrez le programme.

-1voto

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
    main(int argc,char *argv[])
    {

    char *var,*value;
        if(argc==1||argc>3)
        {
        fprintf(stderr,"usage:environ variables \n");
        exit(0);
        }
    var=argv[1];
    value=getenv(var);
    //---------------------------------------
        if(value)
        {
        printf("variable %s has value %s \n",var,value);
        }
        else 
        printf("variable %s has no value \n",var);  
        //----------------------------------------
        if(argc==3)
        {
        char *string;
        value=argv[2];
        string=malloc(strlen(var)+strlen(value)+2);
            if(!string)
            {
            fprintf(stderr,"out of memory \n");
            exit(1);
            }   
            strcpy(string,var);
            strcat(string,"=");
            strcat(string,value);
            printf("calling putenv with: %s \n",string);
            if(putenv(string)!=0)
            {
            fprintf(stderr,"putenv failed\n");
            free(string);
            exit(1);
            }
                        value=getenv(var);
            if(value)
                 printf("New value of %s is %s \n",var,value);
            else
            printf("New value of %s is null??\n",var);
        }     
        exit(0);

    }//----main





/* commands to execure on linux   compile:- $gcc -o  myfile myfile.c
                      run:- $./myfile xyz
                                            $./myfile abc
                                            $./myfile pqr
*/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X