Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
847 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Variables d'environnement Windows en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variables d'environnement Windows en C

n°1357717
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 12:53:27  profilanswer
 

Bonjour,
 
Je voudrais savoir s'il était possible d'utiliser les variables d'environnement de Windows pour l'ouverture d'un fichier en langage C.
En gros j'aimerais pouvoir faire ça:
 

Code :
  1. fopen("C:\Documents and Settings\%USERNAME%\config_%COMPUTERNAME%.txt","r" )


 
Merci d'avance :)
 

mood
Publicité
Posté le 02-05-2006 à 12:53:27  profilanswer
 

n°1357728
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-05-2006 à 13:08:48  profilanswer
 

lynxia a écrit :

Je voudrais savoir s'il était possible d'utiliser les variables d'environnement de Windows pour l'ouverture d'un fichier en langage C. En gros j'aimerais pouvoir faire ça:

Code :
  1. fopen("C:\Documents and Settings\%USERNAME%\config_%COMPUTERNAME%.txt","r" )




Oui, mais pas directement :

  • getenv()
  • sprintf() ([C99] ou snprintf())

Prévoir la place nécessaire...


Message édité par Emmanuel Delahaye le 02-05-2006 à 13:09:24

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1357780
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 13:58:47  profilanswer
 

Merci.
 
Ca marchera aussi sous Windows?

n°1357783
_darkalt3_
Proctopathe
Posté le 02-05-2006 à 14:01:21  profilanswer
 

oui

n°1357846
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 15:11:36  profilanswer
 

Si j'ai bien compris ce que voulait dire Emmanuel Delahaye, je vais devoir dans un premier temps afficher les variables d'environnement (dans mon cas, USERNAME et COMPUTERNAME) grâce à la fonction getenv(), ensuite je devrais les convertir grâce à la fonction sprintf() ?
 
J'ai cherché des informations concernant la fonction getenv() et j'ai trouvé ceci:  
 
char *getenv(const char *name)
 
name correspond à quoi exactement? je ne suis pas sûre d'avoir bien compris comment utiliser la fonction getenv()...

n°1357848
_darkalt3_
Proctopathe
Posté le 02-05-2006 à 15:12:57  profilanswer
 

au nom de la variable d'environnement ?
http://www.cplusplus.com/ref/cstdlib/getenv.html

n°1357849
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-05-2006 à 15:15:05  profilanswer
 

lynxia a écrit :

char *getenv(const char *name)
 
name correspond à quoi exactement? je ne suis pas sûre d'avoir bien compris comment utiliser la fonction getenv()...


http://dpobel.free.fr/man/html/aff [...] an/getenv/


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1357905
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 16:31:34  profilanswer
 

Merci :)
 
Une fois que j'ai obtenu le chemin stocké dans un tableau à l'aide de sprintf, quelle est la syntaxe pour l'indiquer à fopen?

Message cité 1 fois
Message édité par lynxia le 02-05-2006 à 16:32:18
n°1357910
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-05-2006 à 16:39:53  profilanswer
 

lynxia a écrit :

Une fois que j'ai obtenu le chemin stocké dans un tableau à l'aide de sprintf, quelle est la syntaxe pour l'indiquer à fopen?


Bah, tu passes le nom de la chaine à fopen()...

Code :
  1. {
  2.    char s[BIG];
  3.    ... getenv(...);
  4.    ... getenv(...);
  5.    sprintf(s, ...);
  6.    fopen (s, ...);
  7. }


Ca ne me parait pas être un scoop... Si tu as un problème, poste ton code...


Message édité par Emmanuel Delahaye le 02-05-2006 à 16:41:09

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1357912
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 16:44:09  profilanswer
 

Oui effectivement ça en était pas un, désolée pour la question :)
 
Ca marche, merci pour tout :)

mood
Publicité
Posté le 02-05-2006 à 16:44:09  profilanswer
 

n°1357926
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 17:00:58  profilanswer
 

Non en fait j'ai parlé trop vite...
Je pense qu'il y a un souci au niveau du sprintf()...?
 

Code :
  1. char * toto;
  2. char * titi;
  3. char chemin [500];
  4. FILE *fichier;
  5. toto = getenv ("COMPUTERNAME" );
  6. titi = getenv ("USERNAME" );
  7. sprintf (chemin, "C:\Documents and Settings\%s\config_%s.txt",toto,titi);  
  8. fichier = fopen(chemin,"r" );

Message cité 1 fois
Message édité par lynxia le 02-05-2006 à 17:02:08
n°1357930
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-05-2006 à 17:05:47  profilanswer
 

lynxia a écrit :


Code :
  1. toto = getenv ("COMPUTERNAME" );
  2. titi = getenv ("USERNAME" );
  3. sprintf (chemin, "C:\Documents and Settings\%s\config_%s.txt",toto,titi);



'\' se code '\\' en C..

Code :
  1. sprintf (chemin, "C:\\Documents and Settings\\%s\\config_%s.txt",toto,titi);


D'autre part, setenv() peut échouer (retourne NULL). Tu devrais le tester, et peut être proposer des valeurs par défaut, ou un message d'alerte...
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1358035
breizhbugs
Posté le 02-05-2006 à 19:10:40  profilanswer
 

Y a une fonction windows pour ca: http://msdn.microsoft.com/library/ [...] trings.asp

n°1358073
lynxia
Qui? Bah oui, bah...eh! ^^
Posté le 02-05-2006 à 20:18:44  profilanswer
 

Merci pour vos réponses.
 
Pour le moment, ça fonctionne comme je veux.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Variables d'environnement Windows en C

 

Sujets relatifs
Communication haut niveau Unix/WindowsCommand shell Windows a la Linux/Unix?
Gestion de session windowsplusieurs variables dans une variable
variables externes : passage en membres ou argument de methodes ?[C++] programmation multilangues - variables externe
Portage d'application Linux vers Windows[PHP] connection imprimante windows
récupérer le chemin du repertoire 'Poste de travail' sous windows[PERL] Noms de variables variables ?
Plus de sujets relatifs à : Variables d'environnement Windows en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR