Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1003 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  comment extraire le filename d'un chemin en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment extraire le filename d'un chemin en C

n°330961
nico168
Posté le 12-03-2003 à 17:37:26  profilanswer
 

tout est dans le sujet, par exemple :
 
en entrée j'ai "c:\truc\machin\pouet.txt"
en sortie j'aimerai donc "pouet.txt"
 
y'a un moyen simple de faire ca ?
merci

mood
Publicité
Posté le 12-03-2003 à 17:37:26  profilanswer
 

n°330962
nico168
Posté le 12-03-2003 à 17:38:36  profilanswer
 

pour l'instant je pars en codant ca :
1 parcourir la chaine et detecter le dernier emplacement d'un '\'
2 reparcourir en copiant de '\'+1 jusqu'a la fin
mais n'hesitez pas a proposer mieux !

n°330968
bjone
Insert booze to continue
Posté le 12-03-2003 à 17:43:20  profilanswer
 

y'a un moyen simple:
 
http://msdn.microsoft.com/library/ [...] itpath.asp


Message édité par bjone le 12-03-2003 à 17:44:19
n°330977
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-03-2003 à 17:50:41  profilanswer
 

si t'es en C++Builder : ExtractFileName


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°330980
nico168
Posté le 12-03-2003 à 17:51:20  profilanswer
 

oui, mais j'avais oublier de preciser que je devais produire un code multiplateforme.
du coup, j'ai fait ca
 

Code :
  1. void ExtractFileFromPath(const char *path, char *file)
  2. {
  3. int cpt,cpt2;
  4. int last=0;
  5. for (cpt=0;cpt<strlen(path);cpt++)
  6.  if ((path[cpt]=='/') || (path[cpt]=='\'))
  7.   last=cpt;
  8. cpt2=0;
  9. for (cpt=last;cpt<strlen(path);cpt++)
  10.  {
  11.  file[cpt2]=path[cpt];
  12.  cpt2++;
  13.  }
  14. }


 
c'etait pas si dur...
merci


Message édité par nico168 le 12-03-2003 à 17:52:09
n°330983
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-03-2003 à 17:53:07  profilanswer
 

Heu ca va foirer si tu as un fichier avec un "\" dans son nom sous Linux
Et ne me dites pas que ce n'est pas possible, j'ai testé :
http://www.antp.be/test/backslash/
:D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°330987
nico168
Posté le 12-03-2003 à 17:56:20  profilanswer
 

"Heu ca va foirer si tu as un fichier avec un "\" dans son nom sous Linux"
ha oui, j'avais pas pensé a ca...
ben...je crois qu'il ne me reste plus que les directives de compilation.

n°330991
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-03-2003 à 17:57:28  profilanswer
 

C'est ce que Borland a fait pour le ExtractFileName de C++Builder/Delphi/Kylix ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°331010
bjone
Insert booze to continue
Posté le 12-03-2003 à 18:13:57  profilanswer
 

heu splitpath est multi plateforme, c'est du C standard.

n°331012
nico168
Posté le 12-03-2003 à 18:15:24  profilanswer
 

pour info, la version finale.
 

Code :
  1. void ExtractFileFromPath(const char *path, char *file)
  2. {
  3. int cpt,cpt2;
  4. int last=0;
  5. for (cpt=0;cpt<strlen(path);cpt++)
  6. #ifdef WIN32
  7.  if (path[cpt]=='\\')
  8. #else
  9.  if (path[cpt]=='/')
  10. #endif
  11.   last=cpt;
  12. cpt2=0;
  13. for (cpt=last+1;cpt<strlen(path);cpt++)
  14.  {
  15.  file[cpt2]=path[cpt];
  16.  cpt2++;
  17.  }
  18. file[cpt2]='\0';
  19. }


 
Qu'est se qui est passé dans la tete de billou le jour ou il a choisit le '\' plutot que le '/' ?


Message édité par nico168 le 13-03-2003 à 10:01:46
mood
Publicité
Posté le 12-03-2003 à 18:15:24  profilanswer
 

n°331014
nico168
Posté le 12-03-2003 à 18:20:27  profilanswer
 

t'es sur de toi pour splitpath ?
 
man splitpath me retourne rien, dans quel include je trouve ca ?

n°331019
djok_fb
C'était mieux avant!
Posté le 12-03-2003 à 18:24:26  profilanswer
 

sous visual ou borland, dans l'objet string, y a pas un stringtokenizer?

n°331020
bjone
Insert booze to continue
Posté le 12-03-2003 à 18:25:14  profilanswer
 

et man _splitpath ?


Message édité par bjone le 12-03-2003 à 18:25:22
n°331021
nico168
Posté le 12-03-2003 à 18:27:19  profilanswer
 

djok_fb a écrit :

sous visual ou borland, dans l'objet string, y a pas un stringtokenizer?


 
Aucune idée, j'utilise GCC et du C ANSI.

n°331023
bjone
Insert booze to continue
Posté le 12-03-2003 à 18:28:04  profilanswer
 

bizarre splitpath je l'ai toujours eu sous dos que ce soit du TC/BC/WatcomC.

n°331024
nico168
Posté le 12-03-2003 à 18:28:24  profilanswer
 

BJOne a écrit :

et man _splitpath ?


 
il ne connait pas non plus.

n°331025
djok_fb
C'était mieux avant!
Posté le 12-03-2003 à 18:28:26  profilanswer
 

oki, donc dsl pas de stringtokenizer...

n°339313
Musaran
Cerveaulté
Posté le 21-03-2003 à 06:44:04  profilanswer
 

Citation :

for (cpt=0;cpt<strlen(path);cpt++)

Parcours complet à chaque tour de boucle... Ce truc m'a toujours fait marrer.
 

Code :
  1. #include <string.h>
  2. int IsPathSeparator(char c){
  3. #ifdef WIN32
  4. return c=='/' || c=='\\'; //windows
  5. #else
  6. return c=='/'           ; //linux ?
  7. #endif
  8. }
  9. void ExtractFileFromPath(const char *FullPath, char *FileNameExt){
  10. int pos;
  11. for(pos= strlen(FullPath)-1 ; pos>=0 ; --pos){
  12.  if(IsPathSeparator(FullPath[pos]))
  13.   break;
  14. }
  15. strcpy(FileNameExt, &FullPath[pos+1]);
  16. }


/ est un séparateur aussi sous windows.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  comment extraire le filename d'un chemin en C

 

Sujets relatifs
[Algo]Recherche du plus court chemin[ASM , ALGO]Extraire des données d'une disquette
[php] question de chemin relatifChemin relatif et absolu + DocumentRoot
Extraire des infos de la base de registres[DELPHI] comment récupérer le chemin ...
chemin d'acces a une dll[batch] Lire un fichier et extraire une ligne
[Perl] chemin des modules dynamique...[servlet/jsp] récuérer le chemin réel de la racine d'une web-app
Plus de sujets relatifs à : comment extraire le filename d'un chemin en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR