IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

probléme avec putenv() et getenv()


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Par défaut probléme avec putenv() et getenv()
    Bonjour,
    Je viens de remarquer que setenv n'était pas POSIX et je voudrais donc utiliser putenv.
    J'ai donc reproduit une fonction ou il y a exactement le code à l'interieur.
    dans la fonction, quand je fais des getenv la variable est bonne mais quand j'en sors et que je fais un getenv, elle n'existe plus.
    Voila si vous pouvez m'aider.. :/
    Merci d'avance.

  2. #2
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Par défaut
    Déja essaye d'intégrer le code directement c'est plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
    int main(int argc, char *argv[])
    {
      char name[50];
      char value[50];
      char env[101];
     
      printf("Donnez le nom de la variable : ");
      scanf("%s", name);
     
      printf("Donnez la valeur de la variable : ");
      scanf("%s", value);
     
      printf("\nJe positionne \"%s\" avec \"%s\"",name,value);
     
      /* Utilisation de putenv. */
      /* A cause de l'arguement, on va concatener les chaines. */
     
      strcpy(env,"");
      strcat(env, name);
      strcat(env, "=");
      strcat(env, value);
     
      putenv(env);
      printf("\nLe positionnement de getenv = %s \n",getenv(name));
     
     
      return(0);
    }
    Ensuite ceci me gène :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     strcpy(env,"");
      strcat(env, name);
      strcat(env, "=");
      strcat(env, value);
    Fait plutot un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     bzero(env, 101);
      strcpy(env, name);
      strcat(env, "=");
      strcat(env, value);
    Sinon essaye d'éviter l'utilisation de scanf. Utilise plutot fgets parce que si l'utilisateur rentre quelque chose de plus grand que 50 charactère, tu va segfault.

    J'ai testé les fonctions putenv et getenv et a priori elles fonctionnent quand elles sont utilisées de la me façon que toi donc ton problème réside avant leurs utilisation. Fais déja les modifications que je te conseil et regarde ce qu'il se passe.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par andoid Voir le message
    Bdans la fonction, quand je fais des getenv la variable est bonne mais quand j'en sors et que je fais un getenv, elle n'existe plus.
    Voila si vous pouvez m'aider.
    putenv() va modifier/créer une variable d'environnement dans l'environnement courant pas dans celui du père.

    Quand tu lances ton programme (depuis un shell par exemple), tu créés une variable dans l'environnement de ton programme que ton programme peut relire mais cela ne modifie pas les variables d'environnement de ton shell.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo