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 :

Recherche du répertoire personnel


Sujet :

C

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut Recherche du répertoire personnel
    Bonjour

    Je recherche une variable d'environnement particulière ( http://c.developpez.com/faq/?page=en...t#ENV_cmd_line ) : le répertoire personnel (~/ pour linux).

    Mon but est de faire un programme pur Windows et Linux (au moins) en gtk. Pour le moment, il marche bien. Mais, je voudrais mémoriser des données pour les récupérer d'une utilisation à l'autre.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Je ne suis pas sûr d'avoir compris ce que tu cherches.

    Sur mon poste (XP SP3), j'ai une variable d'environnement qui s'appelle "USERPROFILE" qui pointe sur un répertoire qui contient entre autre mon bureau. Cela ressemble à un home directory bien que cette notion (de home directory) soit nettement moins forte sous Windows que sous Linux.
    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
    .

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je cherche quelque chose du style c:\Documents and settings\Troumad\Application Data pour un utilisateur Troumad (par exemple). Ceci doit correspondre à la variable HOME sous Linux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo $HOME
    /home/troumad
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Voici mes variables d'environnement (j'ai modifié quelques valeurs )
    • ALLUSERSPROFILE=D:\Documents and Settings\All Users
    • APPDATA=D:\Documents and Settings\raymond\Application Data
    • CommonProgramFiles=C:\Program Files\Common Files
    • COMPUTERNAME=xxxxx
    • ComSpec=C:\WINNT\system32\cmd.exe
    • DEFLOGDIR=D:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
    • FP_NO_HOST_CHECK=NO
    • HOMEDRIVE=D:
    • HOMEPATH=\Documents and Settings\raymond
    • LOGONSERVER=xxxxx
    • NUMBER_OF_PROCESSORS=2
    • OS=Windows_NT
    • Path=C:\Program Files\PC Connectivity Solution\;C:\Program Files\ThinkPad\Utilities;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\IPSec Client;C:\Program Files\Windows Imaging\;C:\Program Files\MySQL\MySQL Server 5.5\bin;
    • PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
    • path_Backup=C:\Program Files\PC Connectivity Solution\;C:\Program Files\ThinkPad\Utilities;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\IPSec Client;C:\Program Files\Windows Imaging\;C:\Program Files\MySQL\MySQL Server 5.5\bin
    • PROCESSOR_ARCHITECTURE=x86
    • PROCESSOR_IDENTIFIER=x86 Family 6 Model 23 Stepping 10, GenuineIntel
    • PROCESSOR_LEVEL=6
    • PROCESSOR_REVISION=170a
    • ProgramFiles=C:\Program Files
    • PROMPT=$P$G
    • SESSIONNAME=Console
    • SystemDrive=C:
    • SystemRoot=C:\WINNT
    • TEMP=D:\DOCUME~1\raymond\LOCALS~1\Temp
    • TMP=D:\DOCUME~1\raymond\LOCALS~1\Temp
    • TSMPATH=C:\Program Files\ThinkPad\UltraNav Utility
    • UATDATA=C:\WINNT\system32\CCM\UATData\D9F8C395-CAB8-491d-B8AC-179A1FE1BE77
    • USERDNSDOMAIN=xxx
    • USERDOMAIN=xxx
    • USERNAME=raymond
    • USERPROFILE=D:\Documents and Settings\raymond
    • VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
    • VSEDEFLOGDIR=D:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection
    • windir=C:\WINNT


    Il semble que celle que tu cherches soit APPDATA (sur XP SP3)
    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
    .

  5. #5
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Il me semble aussi !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  6. #6
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Sur un poste Seven pro, cela donne :
    • C:\Users\Raymond>set
    • ALLUSERSPROFILE=C:\ProgramData
    • APPDATA=C:\Users\Raymond\AppData\Roaming
    • CommonProgramFiles=C:\Program Files\Common Files
    • CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    • CommonProgramW6432=C:\Program Files\Common Files
    • COMPUTERNAME=LUMIÈRE
    • ComSpec=C:\Windows\system32\cmd.exe
    • FP_NO_HOST_CHECK=NO
    • HOMEDRIVE=C:
    • HOMEPATH=\Users\Raymond
    • LOCALAPPDATA=C:\Users\Raymond\AppData\Local
    • LOGONSERVER=\\LUMIÈRE
    • NUMBER_OF_PROCESSORS=4
    • OS=Windows_NT
    • Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\
    • PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    • PROCESSOR_ARCHITECTURE=AMD64
    • PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 10, GenuineIntel
    • PROCESSOR_LEVEL=6
    • PROCESSOR_REVISION=170a
    • ProgramData=C:\ProgramData
    • ProgramFiles=C:\Program Files
    • ProgramFiles(x86)=C:\Program Files (x86)
    • ProgramW6432=C:\Program Files
    • PROMPT=$P$G
    • PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    • PUBLIC=C:\Users\Public
    • SESSIONNAME=Console
    • SystemDrive=C:
    • SystemRoot=C:\Windows
    • TEMP=C:\Users\Raymond\AppData\Local\Temp
    • TMP=C:\Users\Raymond\AppData\Local\Temp
    • USERDOMAIN=lumière
    • USERNAME=Raymond
    • USERPROFILE=C:\Users\Raymond
    • VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
    • VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
    • windir=C:\Windows


    APPDATA est légèrement différent (C:\Users\Raymond\AppData\Roaming)
    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
    .

  7. #7
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    J'ai fait le petit programme sous Linux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
     
    int main(int argc, char * argv[], char * envp[])
    {
                unsigned char i;
     
                for (i=0;envp[i]!=NULL;i++)
                {
                            printf(envp[i]);printf("\n");
                }
    }
    Même très simple, il mériterait sa place dans la FAC.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    LESSKEY=/etc/.less
    LC_PAPER=fr_FR.UTF-8
    SSH_AGENT_PID=2767
    LC_ADDRESS=fr_FR.UTF-8
    DM_CONTROL=/var/run/xdmctl
    LC_MONETARY=fr_FR.UTF-8
    HOSTNAME=pc-troumad
    GPG_AGENT_INFO=/tmp/gpg-JFOOEU/S.gpg-agent:2792:1
    GLADE_PIXMAP_PATH=:
    TERM=xterm
    XDG_MENU_PREFIX=xfce-
    SHELL=/bin/bash
    XDM_MANAGED=method=classic
    XDG_SESSION_COOKIE=2eb06642ed26fff656f5b04b00000114-1300719896.281353-865764648
    HISTSIZE=1000
    CANBERRA_DRIVER=pulse
    LC_SOURCED=1
    TMPDIR=/tmp/
    WINDOWID=25165828
    MGA_MENU_STYLE=mageia
    LC_NUMERIC=fr_FR.UTF-8
    QTDIR=/usr/lib/qt4
    GTK_MODULES=canberra-gtk-module
    USER=troumad
    LC_TELEPHONE=fr_FR.UTF-8
    QT4DOCDIR=/usr/share/doc/qt4/doc
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.iso=01;31:*.jpg=01;35:*.jpeg=01;35:*.JPG=01;35:*.JPEG=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.ico=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.divx=01;35:*.xvid=01;35:*.3gp=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:*.mp2=00;36:*.mod=00;36:*.xm=00;36:*.s3m=00;36:*.it=00;36:*.wma=00;36:*~=47;30:*.bak=47;30:*.swp=47;30:*.bck=47;30:*.bk=47;30:*.old=47;30:*.tmp=47;30:*.save=47;30:*.rpmsave=47;30:*.rpmnew=47;30:
    GLADE_MODULE_PATH=:
    SSH_AUTH_SOCK=/tmp/ssh-bxVtoE2766/agent.2766
    SESSION_MANAGER=local/localhost:@/tmp/.ICE-unix/2881,unix/localhost:/tmp/.ICE-unix/2881
    SCREENDIR=/home/troumad/tmp
    XDG_CONFIG_DIRS=/etc/xdg
    NLSPATH=/usr/share/locale/%/%N
    DESKTOP_SESSION=06xfce4
    MAIL=/var/spool/mail/troumad
    PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/home/troumad/bin
    LC_MESSAGES=fr_FR.UTF-8
    LC_COLLATE=fr_FR.UTF-8
    LC_IDENTIFICATION=fr_FR.UTF-8
    INPUTRC=/etc/inputrc
    PWD=/home/troumad/Documents/add/perso
    XMODIFIERS=@im=none
    LANG=fr_FR.UTF-8
    PYTHONSTARTUP=/etc/pythonrc.py
    LC_MEASUREMENT=fr_FR.UTF-8
    PYTHONDONTWRITEBYTECODE=1
    SSH_ASKPASS=/usr/lib64/ssh/ssh-askpass
    HISTCONTROL=ignoredups
    LESSCHARSET=utf-8
    SHLVL=2
    HOME=/home/troumad
    LANGUAGE=fr_FR.UTF-8:fr
    GCONF_TMPDIR=/tmp
    GTK_PATH=:/usr/lib64/gtk-2.0
    G_FILENAME_ENCODING=@locale
    LESS=-MM
    TMP=/tmp/
    LOGNAME=troumad
    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-tblGx62uoN,guid=46bcc7a750ce2d88c6da1c320000003e
    XDG_DATA_DIRS=/usr/local/share:/usr/share
    LC_CTYPE=fr_FR.UTF-8
    LESSOPEN=|/usr/bin/lesspipe.sh LESSOPEN=|/usr/bin/lesspipe.sh /ESSOPEN=|/usr/bin/lesspipe.sh /dSSOPEN=|/usr/bin/lesspipe.sh /d3SOPEN=|/usr/bin/lesspipe.sh /d3*OPEN=|/usr/bin/lesspipe.sh /d3*3PEN=|/usr/bin/lesspipe.sh /d3*3=EN=|/usr/bin/lesspipe.sh /d3*3=.N=|/usr/bin/lesspipe.sh /d3*3=.3=|/usr/bin/lesspipe.sh /d3*3=.3=|/usr/bin/lesspipe.sh /d3*3=.3=*/usr/bin/lesspipe.sh /d3*3=.3=*;usr/bin/lesspipe.sh /d3*3=.3=*;=sr/bin/lesspipe.sh /d3*3=.3=*;=.r/bin/lesspipe.sh /d3*3=.3=*;=.;/bin/lesspipe.sh /d3*3=.3=*;=.;0bin/lesspipe.sh /d3*3=.3=*;=.;0=in/lesspipe.sh /d3*3=.3=*;=.;0=.n/lesspipe.sh /d3*3=.3=*;=.;0=.0/lesspipe.sh /d3*3=.3=*;=.;0=.0.lesspipe.sh /d3*3=.3=*;=.;0=.0.3esspipe.sh /d3*3=.3=*;=.;0=.0.3fsspipe.sh /d3*3=.3=*;=.;0=.0.3f*spipe.sh /d3*3=.3=*;=.;0=.0.3f*;pipe.sh /d3*3=.3=*;=.;0=.0.3f*;fipe.sh /d3*3=.3=*;=.;0=.0.3f*;f:pe.sh /d3*3=.3=*;=.;0=.0.3f*;f:0e.sh /d3*3=.3=*;=.;0=.0.3f*;f:0m.sh /d3*3=.3=*;=.;0=.0.3f*;f:0m3sh /d3*3=.3=*;=.;0=.0.3f*;f:0m3=h /d3*3=.3=*;=.;0=.0.3f*;f:0m3=: /d3*3=.3=*;=.;0=.0.3f*;f:0m3=:1/d3*3=.3=*;=.;0=.0.3f*;f:0m3=:1/
    BROWSER=/usr/bin/www-browser
    WINDOWPATH=8
    META_CLASS=download
    DISPLAY=:0.0
    GLADE_CATALOG_PATH=:
    LIBGLADE_MODULE_PATH=:
    LC_TIME=fr_FR.UTF-8
    LC_NAME=fr_FR.UTF-8
    COLORTERM=Terminal
    _=./a.out
    OLDPWD=/maison_1/troumad/sites/Troumad/Mes_regles
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  8. #8
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par troumad Voir le message
    Même très simple, il mériterait sa place dans la FAC.
    Dans la FAQ alors

    Pourquoi 2 printf() au lieu d'un seul ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s\n", envp[i]);
    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
    .

  9. #9
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    FAQ
    Deux printf... Pour ne pas mettre le printf avec le %s, une folie réfléchie du moment.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  10. #10
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par troumad Voir le message
    Pour ne pas mettre le printf avec le %s, une folie réfléchie du moment.
    Avec ton code (2 printf), si une des variable d'environnement contient une séquence %s (pourquoi pas, c'est l'utilisateur qui positionne les variables d'environnement), c'est le crash car la valeur de la variable d'environnement sera interprétée comme le format d'affichage et s'il y a %s dans la valeur, printf ira chercher un paramètre supplémentaire (qui n'existe pas) pour remplacer ce %s et l'interprétera comme une chaine de caractères (un crash).

    Quand on n'est pas sûr de la validité des données que l'on reçoit, il faut empêcher leur interprétation en mettant la chaine "%s" dans le format d'affichage.
    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
    .

  11. #11
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je n'avais pas pensé au %s dans les valeurs d'environnement ! Mais, as-tu pensé à deux, voir plus de %s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
     
    int main(int argc, char * argv[], char * envp[])
    {
                unsigned short i,j;
     
                for (i=0;envp[i]!=NULL;i++)
                {
                        for(j=0;envp[i][j]!=0;j++) putc(envp[i][j],stdout);
                        putc('\n',stdout);
                }
    }
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  12. #12
    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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par troumad Voir le message
    Je n'avais pas pensé au %s dans les valeurs d'environnement ! Mais, as-tu pensé à deux, voir plus de %s
    Oui et il n'y a pas de probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *valeur = "%s %s %d %f";
    printf("%s\n", valeur);
    affichera bien :
    %s %s %d %f
    il n'y aura pas de récursivité dans l'interprétation des %s
    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
    .

  13. #13
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    OK !
    Ce n'est pas le cas avec un sprintf(ch,"../%s",ch) que j'ai eu aujourd'hui ! J'ai eu un problème de récursivité
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  14. #14
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par troumad Voir le message
    OK !
    Ce n'est pas le cas avec un sprintf(ch,"../%s",ch) que j'ai eu aujourd'hui ! J'ai eu un problème de récursivité
    Tu prends de gros risques :

    n1256 :
    The sprintf function is equivalent to fprintf, except that the output is written into an array (specified by the argument s) rather than to a stream. A null character is written at the end of the characters written; it is not counted as part of the returned value. If copying takes place between objects that overlap, the behavior is undefined.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  15. #15
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Tant que j'y suis je regarde aussi le répertoire vers les données personnelles pour windows : HOMEPATH
    Je suis surpris qu'il ne pointe pas vers MesDocuments ! Comment repérer ce répertoire ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  16. #16
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Je me pose une question sur le HOMEDRIVE pour windows...
    S'il n'y pas pas de C:, D: ou je ne je quoi au début d'un chemin qui commence par un \ , c'est qu'il faut rajouter le HOMEDRIVE devant ? J'ai un problème avec le C: qui n'est pas toujours présent dans mon cas !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par troumad Voir le message
    J'ai fait le petit programme sous Linux :
    euh....


    la commande printenv marche toute seule



    Maintenant, je ne sais pas si ça marche sur Windows, mais sur unixoides

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *p = getenv("$HOME");
    marche...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  18. #18
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Sous Linux, je viens de tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
     
    int main()
    {
            printf("%s\n",getenv("$HOME"));
     
            return 0;
    }
    Le résultat n'est pas génial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ gcc test.c;./a.out 
    (null)
    $ echo $HOME
    /home/bs
    Si j'enlève le $ devant HOME, j'arrive à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ gcc test.c;./a.out 
    Erreur de segmentation
    C'est dommage, ça m'aurait bien arrangé !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  19. #19
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Le C ne va pas t'interpréter le "$" !
    La variable d'environnement c'est "HOME" pas "$HOME"

    ... désolé, j'avais pas vu la deuxième partie
    ... en fait, non. getenv est définie dans stdlib.h que tu n'as #inclus d'où le "segmentation fault" (je savais bien que ça marchait !!!)
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    t'as raison je viens de vérifier dans mes fichiers c'est "HOME" ..



    N'empêche que la commande est là ..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. crontab et répertoire personnel
    Par troumad dans le forum Administration système
    Réponses: 1
    Dernier message: 08/03/2009, 17h47
  2. Recherche de répertoire
    Par samuel539 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 25/02/2009, 11h06
  3. [linux] connaitre le répertoire personnel
    Par troumad dans le forum C
    Réponses: 5
    Dernier message: 18/06/2007, 14h39
  4. rechercher un répertoire vide
    Par palcoquoz dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 15/06/2007, 17h04

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