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 :

Recuperer le nom d'un fichier


Sujet :

C

  1. #1
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut Recuperer le nom d'un fichier
    Salut,

    Je cherche à récupérer le nom d'ujn fichier ouvert à partir de son pointeur (ou par n'importe quelle autre méthode d'ailleurs).

    Quelqu'un peut il m aider ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Si tu possèdes un descripteur vers le fichier, tu peux utiliser la fonction fstat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int fstat(int filedes, struct stat *buf);

  3. #3
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    Merci.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    désolé mais fstat() ne permet pas d'obtenir le nom du fichier
    http://www.linux-france.org/article/...2/fstat-2.html

    La structure contient plusieurs infos sur le fichier mais pas le nom:
    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
    struct stat
                  {
                      dev_t         st_dev;      /* Périphérique                */
                      ino_t         st_ino;      /* Numéro i-noeud              */
                      mode_t        st_mode;     /* Protection                  */
                      nlink_t       st_nlink;    /* Nb liens matériels          */
                      uid_t         st_uid;      /* UID propriétaire            */
                      gid_t         st_gid;      /* GID propriétaire            */
                      dev_t         st_rdev;     /* Type périphérique           */
                      off_t         st_size;     /* Taille totale en octets     */
                      unsigned long st_blksize;  /* Taille de bloc pour E/S     */
                      unsigned long st_blocks;   /* Nombre de blocs alloués     */
                      time_t        st_atime;    /* Heure dernier accès         */
                      time_t        st_mtime;    /* Heure dernière modification */
                      time_t        st_ctime;    /* Heure dernier changement    */
                  };
    Et je ne sais pas comment on peut récuperer le nom du fichier ...
    Par contre si il s'agit d'un terminal (stdin et stdout sous unix/linux), tu peux utiliser ttyname() mais il faut que le descripteur de fichier corresponde à un terminal (isatty())
    http://www.linux-france.org/article/...ttyname-3.html
    http://www.linux-france.org/article/.../isatty-3.html

    a++

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Autant pour moi. J'ai l'habitude d'utiliser en même temps struct dirent et struct stat. Le nom du fichier n'est disponible que dans la structure dirent.

    Je n'ai pas de fonction sous la main, mais ça m'étonne qu'il n'existe pas de fonction qui récupère le nom d'un fichier à partir de son numéro d'inode...

  6. #6
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Tu parles d'un pointeur ... vers quoi ? Vers FILE* ? Dans ce cas là tu dois pouvoir retrouver le nom du fichier vu que tu l'as ouvert avec fopen ... T'as qu'à le stocker qq.part ! Fait une structure si tu veux pas le perdre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct
    {
      FILE *f;
      char *nom;
    } anti_tete_en_lair;
    @+ Haypo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recuperer le nom d'un fichier et le convertir en string
    Par med_ellouze dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 13/08/2007, 22h23
  2. recuperer le nom d'un fichier
    Par choko62 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/06/2007, 14h26
  3. Réponses: 1
    Dernier message: 06/12/2006, 15h24
  4. Commande sh permettant de récupérer le nom d'un fichier dans un repertoire
    Par Actarus78 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/09/2006, 17h18
  5. Réponses: 6
    Dernier message: 05/05/2006, 14h47

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