begin process at 2012 05 29 05:44:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Extraire à partir d'un chemin complet de fichier seulement le nom ... ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

vendredi 17 février 2006 à 11:19:25 | Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

julien_boss

Bonjour tout le monde

donc la question est pas compliqué je pense, j'ai un chemin du style " C:\temp\file.cpp", et je veux juste "file"
Je suppose que ca doit pas etre bien compliqué, en tout cas sur les sources données ici j'ai rien trouvé de très convaincant. J'ai essayé de le faire moi meme en reprennant le modèle d'une source qui retirait juste le répertoire, mais sans grand succès...

en gros, existerait-il une fonction, dans l'API, ou autre part ? Ou encore faite si gentillement par vous ?

Merci
vendredi 17 février 2006 à 11:35:52 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

buno

Administrateur CodeS-SourceS
Tu pars de la fin de ta chaine de caractères et tu rechercher un point "."
Ensuite, tu continue à remonter jusqu'au slash "\"
Le nom de ton fichier est compris entre les 2 pointeurs.

Ceci est la méthode générale. Quel langage utilises-tu?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
vendredi 17 février 2006 à 11:50:39 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

julien_boss

Le C++, ou C, enfin je n'y vois pas de différence, ici en tout cas ; et je code sous Dev-C++

J'ai essayé une fonction que voici :

char * ExtractFileName(char * szFileName)
{
 char buf[264];
 char *c, *b;
 c = szFileName;
 b = buf;
 
 while(*c != '.')c++;
 if(*c == '.')
 {
  while(*c != '\\')c--;
  if(*c == '\\')
  {
   c++;
   while(*b = *c){c++; b++;}
   while(*b != '.') b--;   
   *b = 0;    
  }  
 }
 cout << buf << endl;
 return buf;
}

Elle marche, ou du moins, la ligne en rouge marche, mais à l'intérieur de la fonction seulement. Dés que j'essaie de retourner la valeur du buffer, soit ca m'affiche un as de pique (??), soit la première ligne si je change :
char * ExtractFileName(char * szFileName) en char  ExtractFileName(char * szFileName)
et : return buf; en return * buf;

Je ne comprends pas bien ces changements je l'avoue, j'ai juste bidouiller pour voir si ca marche, mais non...
Alors comment faire pour retourner le buffer ? Je ne pense pas qu'il y ait d'erreurs dans mon code
vendredi 17 février 2006 à 11:58:08 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

Zootella

 char buf[264];

buf n'est plus valide quand la fonction se termine.

soit tu met en static soit tu alloue avec malloc.


vendredi 17 février 2006 à 12:02:17 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

buno

Administrateur CodeS-SourceS
Je préfère la méthode de passer la chaine de retour en paramètres:
void ExtractFileName(char * path, char * file);

en ayant pris soin d'allouer file avant d'entrer dans la fonction

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
vendredi 17 février 2006 à 12:06:02 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

julien_boss

Et aussi, c'est normal que le compilateur me signal l'erreur "Missing terminating ' character" quand je mets : 

  while(*c != '\')c--;
  if(*c == '\')

au lieu de :

  while(*c != '\\')c--;
  if(*c == '\\')

?

vendredi 17 février 2006 à 12:09:36 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

BruNews

Administrateur CodeS-SourceS
'\' est carac d'échappement, faut le doubler

ciao...
[ Lien ]
BruNews, MVP VC++
vendredi 17 février 2006 à 12:13:09 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

julien_boss

Oui en static ca marche, merci beaucoup ! Montenant pour mon histoire slashes s'il vous plait ? sans trop vous bruscer bien sur hein
vendredi 17 février 2006 à 12:16:04 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

julien_boss

J'avais pas vu ta réponse BruNews dsl, oui je l'ai fait doubler, mais est-ce normal que le chemin complet de mon fichier doit lui aussi avoir à chaque fois des double slashe ?
comme ca :
"C:\\mes docs\\musique\\machin.mmm"
et que ca bugge quand je n'en met qu'un chaque fois ?
vendredi 17 février 2006 à 12:20:12 | Re : Extraire à partir d'un chemin complet de fichier seulement le nom ... ?

BruNews

Administrateur CodeS-SourceS
Toujours doublé dans une constante, c'est un caractère d'échappement comme dit plus haut.

ciao...
[ Lien ]
BruNews, MVP VC++

1 2

Cette discussion est classée dans : fichier, partir, chemin, extraire, complet


Répondre à ce message

Sujets en rapport avec ce message

charger un fichier sans indiquer le chemin complet ? [ par Batman60 ] salutcomment faire pour accéder à un fichier sans mentionner le chemin complet?le but c'est de pouvoir placer l'exe qui contient ce code n'importe ou COPIE DE FICHIER SANS INDIQUER LE CHEMIN COMPLET [ par Batman60 ] Bonjourje voudrais copier et renommer un fichier vers un dossier sans indiquer le chemin complet pour pouvoir placer le dit dossier n'importe où sur l [fopen] Probleme avec les chemin complet [ par Ilsundal ] Bonjour a tous,je rencontre un soucis avec la commande fopen pour ouvrir un fichier binaire sous Windows. Quand j'utilise le chemin relatif pour accéd Comment extraire des informations à partir d'un fichier XML ? [ par boualiasma ] Bonjour, Je suis entrain de programmer en C avec Visual studio 2008 sous Windows XP. Je voudrais extraire des informations à partir d'un fichier XML extraire le nom d'un fichier de son chemin d'accés [ par johnASP ] salut, J'utilise le logiciel Microsoft Visual Studio en C++ .Net . Je souhaiterai pouvoir ouvrir un fichier .txt présent dans mon ordinateur pour l'a Récuperer le chemin complet d'un fichier avec OpenFileDialog en C++.Net [ par johnASP ] Bonjour, Je travail sous Visual Studio v.2005. Je voudrais, aprés l'ajout d'un fichier via la fonction "openFileDialog", récupérer le chemin d'accés lecture à partir d'un fichier binaire qui contient des structures [ par miss_poopoucy ] Bonjour, j'ai un petit problème au niveau de la récupération des structures (Etudiant) enregistrées dans un fichier binaire ,pour les charger ensuite Fichier [ par isbou1 ] Bonjour, Comment en c ou en c++ sous windows je peux demander à un utilisateur le chemin d'un fichier(.jpg,png...) et ensuite stocker ce chemin dans u Extraire une image d'un fichier MP3 [ par patevrard ] Bonjour Je souhaite savoir comment atteindre et extraire une image dans un fichier MP3 en C++ ? Quel tag ? Merci beaucoup


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales