Récupère le path d'un fichier

0/5 (7 avis)

Snippet vu 3 849 fois - Téléchargée 34 fois

Contenu du snippet

Ce code permet de récupérer le path d'un fichier dont vous avez le chemin par exemple si vous donnez à la fonction :
c:\mesdoc\test.txt
il vous renverra (au choix)
c:\mesdoc
ou
c:\mesdoc\

Elle retourne -1 si la fonction echoue
la taille de la chaine si ça réussi

Source / Exemple :


int GetFileDir(IN char *File,OUT char *Dir,IN bool EndSlash)
{
  strcpy (Dir, File);
  for (int i=strlen(Dir); i>1; i--)
  {
    if (Dir[i]=='\\')
    {
      if (!EndSlash) Dir[i]=0;
      return strlen(Dir);
    }
    Dir[i]=0;
  }
  return -1;
}

A voir également

Ajouter un commentaire Commentaires
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
12 août 2007 à 20:59
Très mauvaise habitude à ne pas prendre les static buffer.
Une fonction qui veut se faire remplir un buffer doit le passer en param.
int GetFileDir(char *file, char *pdir)
{
char *c = pdir;
while(*c = *file) {c++; file++;}
while(*c != '\\') c--;
*++c = 0;
return (c - pdir);
}
darkpoulpo
Messages postés
76
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
29 novembre 2009

12 août 2007 à 16:43
strrchr(); pas strrchar(). jme suis trompé en ecrivant
darkpoulpo
Messages postés
76
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
29 novembre 2009

12 août 2007 à 16:42
char *GetFileDir(char *File)
{
static char r[4096] = ".\";

char *t strrchar(nomdefichier,'\\');
if (t) {
*(t+) = '\0';
strncpy(r,nomdefichier,4096);
}

return r;
}
rosco91
Messages postés
20
Date d'inscription
mardi 22 mai 2007
Statut
Membre
Dernière intervention
4 juin 2007

5 juin 2007 à 12:07
Je penses que cela aurait été plus simple de mettre ton code entier car beaucoup de choses ne sont pas déclarées. Ton code n'est pas commenter donc pour un débutant c'est du charabia.
DarkBoss
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

22 août 2004 à 23:45
bon voila en gros g changerai ton code comme cela :
char *GetFileDir(char *File, bool EndSlash)
{
char *Dir=(char*)malloc(1024);
strcpy (Dir, File);
for (int i=strlen(Dir); i>1; i--)
{
if (Dir[i]=='\\')
{
if (!EndSlash) Dir[i]=0;
break;
}
Dir[i]=0;
}
return Dir;
}
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.