Récupère le path d'un fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 681 fois - Téléchargée 32 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

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
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);
}
Messages postés
76
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
29 novembre 2009

strrchr(); pas strrchar(). jme suis trompé en ecrivant
Messages postés
76
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
29 novembre 2009

char *GetFileDir(char *File)
{
static char r[4096] = ".\";

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

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

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.
Messages postés
154
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
12 décembre 2008

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.