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 :

R�cup�rer le home directory et lui ajouter une string


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2014
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Par d�faut R�cup�rer le home directory et lui ajouter une string
    Bonjour,

    Je souhaite, en C++, r�cup�rer le dossier utilisateur (home directory). J'ai lu que ceci peut se faire ainsi :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char *userDir = getenv("HOME");
    Ceci marche parfaitement en me renvoit bien mon dossier utilisateur (/home/flo), mais mon but est d'ajouter un dossier .CeCWriter � la cha�ne retourner. J'ai essay� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    char confDir = *userDir + "/.CeCWriter";
    mais cela ne fonctionne pas et me renvoi une erreur (invalid conversion from 'const char*' to 'char' [-fpermissive]). Cela doit �tre li� � l'utilisation de pointeurs. Je vous avoue que je d�bute en C++, et malgr� des recherches nombreuses je ne trouve pas de solution � mon probl�me.

    Pourriez-vous m'aider svp ?

    Merci d'avance !

    Flor�al.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ceci n'est pas programmer en C++, c'est programmer en C sur un compilo C++.

    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    #include <string>
     
    ...
     
    std::string userDir = getenv("HOME");
    std::string confDir = userDir + "/.CeCWriter":
    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.

  3. #3
    Membre chevronn� Avatar de fenkys
    Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par d�faut
    Bonjour,


    M�me en C cela ne marche pas:
    - userDir ne contient pas ta donn�es, mais un pointeur sur celle ci.
    - en faisant userDir = getenv("HOME"), tu ne copies pas le path de ton r�pertoire home mais un pointeur constant sur ce path.
    - *userDir d�r�f�rence le pointeur, c'est � dire qu'il te donne acc�s � la donn�e. En l�occurrence tu as une valeur de type char (soit '/') et pas chaine de char (puisque ton pointeur est char*)
    - "/.CeCWriter"est un pointeur constant sur un char.
    - Ton addition, ajoute donc un char � un pointeur (ce qui correspond bien au message d'erreur qui s'affiche) et ne fait pas comme tu le penses la concat�nation de deux chaines.

    En C, pour concat�ner deux chaines, il faut utiliser des fonctions sp�cialis�e, telles que strcat ou strncat.
    En C++, la classe std::string manipule directement des chaines et pas des pointeurs sur char tout en limitant les risques d'erreur m�moire.

    Fenkys

  4. #4
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Novembre 2014
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Par d�faut R�solu
    Bonjour,

    Merci pour votre aide, �a fonctionne � pr�sent, graĉe au code de M�dinoc.

    Merci � fenkys pour son explication

    Flor�al.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 21/02/2010, 04h44
  2. R�ponses: 1
    Dernier message: 12/01/2010, 22h18
  3. R�ponses: 41
    Dernier message: 11/12/2009, 11h24
  4. R�ponses: 8
    Dernier message: 27/11/2008, 16h14
  5. R�ponses: 5
    Dernier message: 28/09/2005, 00h55

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