Bonjour,
J'aimerais faire un programme qui lit dans appdata sauf que je n'ai pas réussi avec C:\\Users\\%USERNAME%\\AppData\\... alors comment fait on ?
Merci d'avance.
Bonjour,
J'aimerais faire un programme qui lit dans appdata sauf que je n'ai pas réussi avec C:\\Users\\%USERNAME%\\AppData\\... alors comment fait on ?
Merci d'avance.
Bonjour
Quelle que soit la fonction que tu as utilisé pour ouvrir ce dossier, celui qui a créé cette fonction n'avait absolument aucune raison pour s'imaginer que "%USERNAME%" devait être vue comme une variable d'environnement et qu'elle devait alors être remplacée par la chaine correspondante.
Pour récupérer ton environnement, tu peux soit utiliser le 3° paramètre de main() (conventionnellement déclaré comme char **envp ou char *envp[]) ; soit utiliser getenv(). Pour envp c'est pas trop pratique parce que les chaines sont écrites sous la forme "variable=valeur" donc si tu veux récupérer une variable particulière, faut parser le bouzin, se caler sur le '=' etc. Donc getenv("USERNAME") devrait le faire.
PS: ne fout pas bêtement getenv("USERNAME") directement dans la fonction. Il te faut
1) créer la chaine contenant le chemin, chaine qui contiendra le début + le retour de getenv() + la fin => sprintf ou strcat
2) appeler ta fonction avec cette chaine ainsi créée...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
"N'importe quel utilisateur sur n'importe quel ordinateur" est impossible (notamment à cause des profils itinérants).
Par contre, l'utilisateur courant sur le poste courant, c'est très facile, getenv("APPDATA") te donnant le chemin du répertoire en question (pour l'avoir en Unicode, il faudra utiliser SHGetKnownFolderPath).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Hello
En complément à Médinoc, il y a également la fonction ExpandEnvironmentStrings() qui peut te donner un coup de pouce.
On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent
Quitte à utiliser les fonctions Microsoft, autant supprimer les intermédiaires (comme les variables d'environnement) et utiliser directement SHGetKnownFolderPath().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager