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 :

Fonction qui r�cup�re le nom court d'un fichier


Sujet :

C

  1. #1
    Membre � l'essai
    Inscrit en
    Juillet 2008
    Messages
    5
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par d�faut Fonction qui r�cup�re le nom court d'un fichier
    Salut tout le monde
    Je suis � la recherche d'une fonction standard qui r�cup�re le nom court d'un fichier depuis son chemin d'acc�s

    Je sais que vous allez me dire de la coder par moi m�me !! En effet je l'ai cod� et je l'ai test� en console et elle marche parfaitement !!
    Voil� ma focntion :
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <windows.h>
     
    char shortName(const char chemin[], char nomCourt[]);
     
    int main(int argc, char *argv[])
    {
      int choix = 0, res, i;
      char tmp[1024], cheminFichier[1024] = "", nomCourtFichier[1024] = "";
     
      printf("Pour ouvrir la boite de dialogue de windows tapez 1 : ");
      scanf("%d", &choix);
      if (choix)
      {
        OPENFILENAME ofn;
        tmp[0] = '\0' ;
        ZeroMemory (&ofn , sizeof (OPENFILENAMEW));
        ofn.lStructSize = sizeof (OPENFILENAMEW);
        ofn.lpstrFile = tmp;
        ofn.nMaxFile = 1024;
        ofn.lpstrTitle = "Ouvrir un fichier audio";
        ofn.lpstrFilter = "Fichiers MP3 (*.mp3)\0*.mp3\0Fichiers MP2 (*.mp2)\0*.mp2\0Fichiers WAV (*.wav)\0*.wav\0Fichiers OGG (*.ogg)\0*.ogg\0Fichiers RAW (*.raw)\0*.raw\0Tous (*.*)\0*.*\0" ;
        ofn.Flags = OFN_LONGNAMES | OFN_EXPLORER;
        res = GetOpenFileName(&ofn);
        if (res != 0)
        {
          for (i = 0 ; i < 1024 ; i++)
            cheminFichier[i] = ofn.lpstrFile[i];
     
          shortName(cheminFichier, nomCourtFichier);
        }
      }
      printf("\nLe chemin d'acces du fichier est :\n");
      printf("%s\n\n", cheminFichier);
      printf("\nLe nom court du fichier est :\n");
      printf("%s\n\n", nomCourtFichier);
     
      system("PAUSE");
      return EXIT_SUCCESS;
    }
     
    char shortName(const char chemin[], char nomCourt[])
    {
      int i, compteurAntiSlashs = 0, compteurVerification = 0, conservation = 0;
     
      for (i = 0 ; i < 1024 ; i++)
      {
        if (chemin[i] == '\\')
          compteurAntiSlashs++;
      }
      for (i = 0 ; i < 1024 ; i++)
      {
        if (chemin[i] == '\\')
        {
          compteurVerification++;
          if (compteurVerification == compteurAntiSlashs)
          {
            if (conservation == 0)
              conservation = i;
            nomCourt[i - conservation] = chemin[i + 1];
          }
        }
        else if (compteurVerification == compteurAntiSlashs)
        {
          nomCourt[i - conservation] = chemin[i + 1];
        }
      }
      return nomCourt;
    }
    Le probl�me c'est que si j'int�gre cette fonction dans un grand code d'un programme en SDL, elle ne marche pas correctement : parfois elle renvoie le nom correct du fichier et parfois elle renvoie un nom incompr�hensible et parfois un nom null !!
    C'est tr�s compilqu� pour vous repr�senter ce probl�me !! Mais, en tous cas, ce n'est pas mon vrai probl�me maintenant, tout ce que je veux savoir : Y a-t il une fonction standard qui r�cup�re le nom court d'un fichier depuis son chemin d'acc�s ??

  2. #2
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Pas de fonction standard pour cela.

    Par contre, tu t'y prends mal pour r�cup�rer uniquement le nom de ton fichier.

    Comme cela, je pense � une solution du type:
    Pointer sur le fin de ta chaine de caract�res comportant le chemin de ton fichier, puis d�cr�menter le pointeur jusqu'� apercevoir le '//'. A partir de cet emplacement m�moire, tu effectues une copie.
    Ca fait un truc du grenre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    char *c = NULL;
    char nom[100] = 0;
    c = pFinChaine;
    while(*c!='\\') c--;
    strcpy(nom,++c);
    P.S.: Sinon tu peux toujours le faire � coup de strtok().

  3. #3
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 765
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activit� : Architecte technique retrait�
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 765
    Par d�faut GetShortPathName?
    Bonjour,
    Peut etre le MSDN sur le sujet:
    http://msdn.microsoft.com/en-us/libr...47(VS.85).aspx
    devrait vous d�panner
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre � l'essai
    Inscrit en
    Juillet 2008
    Messages
    5
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Par d�faut
    Merci les amis pour vos r�ponses mais j'i enfin r�ussi � r�soudre le probl�me
    Il faut juste utiliser la fonction strrchr qui renvoie un pointeur vers le dernier caract�re qu'elle a trouv� dans une cha�ne !!
    Merci � vous

Discussions similaires

  1. R�ponses: 2
    Dernier message: 27/05/2007, 23h05
  2. fonction qui donne le nom de la racine
    Par muad'dib dans le forum Windows
    R�ponses: 4
    Dernier message: 24/05/2007, 11h40
  3. [MySQL] Cr�er une fonction qui r�cup�re un enregistrement
    Par azahord dans le forum PHP & Base de donn�es
    R�ponses: 8
    Dernier message: 10/11/2006, 20h13
  4. R�ponses: 4
    Dernier message: 03/02/2006, 18h02
  5. R�ponses: 7
    Dernier message: 03/12/2004, 12h40

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