Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DECOUPAGE CHEMIN FICHIER (FORUM)


Information sur la source

Catégorie :Fichiers / Disque Classé sous : découper, fichier, split, path, chemin Niveau : Débutant Date de création : 10/08/2005 Date de mise à jour : 10/08/2005 14:17:19 Vu / téléchargé: 6 425 / 271

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

Description

Suite a une demande sur le forum, voila un code qui permet de découper le chemin
d'un fichier en sous élément.
Le chemin doit etre passé a la ligne de commande.

L'interet d'un tel code ne réside que dans la manipulation des chaines de caractères.

Le code est entierement en C.

Shell
[http://www.free-go.net]
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   FileInfo
    •   Release
      • test.exeTélécharger ce fichier [Réservé aux membres club]40 960 octets
    • test.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 248 octets
    • test.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier897 octets
    • test.suoTélécharger ce fichier [Réservé aux membres club]11 264 octets
    • test.vcprojTélécharger ce fichier [Réservé aux membres club]4 551 octets

Télécharger le zip

Historique

10 août 2005 12:32:50 :
Juste pour essayer ^_^
10 août 2005 14:17:19 :
Correction d'une fuite mémoire (Thx BruNews)

Commentaires et avis

signaler à un administrateur
Commentaire de xterminhate le 10/08/2005 12:37:47

Rapide.... ;-)

signaler à un administrateur
Commentaire de BruNews le 10/08/2005 12:57:59 administrateur CS

Salut,

eh bien tu n'es pas en forme ?

Dans ta GetFileType(), il y a de la mémoire allouée par ta strtoupper(), je ne vois pas le free() correspondant. Comme quoi il ne faut jamais retourner de chaine allouée dans une func c'est source d'oubli de libération de mémoire à tout coup, faut passer buffer que la func remplira. De plus ça oblige à bosser avec le mode d'alloc de la func, on peut ne pas vouloir de la CRT.

En C on connait les pointeurs, pas besoin d'itérateurs comme dans GetFileName() et les autres, ça fait parcourit les chaines plusieurs fois. 1 seul compteur suffit pour controler la longueur qund tu écris afin d'éviter un overflow.

A revoir, bonne continuation.

signaler à un administrateur
Commentaire de steve_clamage le 10/08/2005 13:22:49

Il manque des const et un entete (ctype.h pour toupper), le cast de la valeur retour de malloc n'est pas nécéssaire.

signaler à un administrateur
Commentaire de DeAtHCrAsH le 10/08/2005 13:58:53

BruNews> Faut dire que je dors pas beaucoup ces temps ci (debout 5h, coucher 23h30)
Sinon pour les itérateurs je sais que j'aurais pu passer par les pointeurs en décellant le "Null-terminated string" mais le gars est un débutant. C'est plus dans l'optique de travailler sur des tableaux que sur des pointeurs.

Steve_Clamage> Pour le cast je suis obligé car je passe par un compilateur C++. Il n'accèpete pas de transtypé un (void *) en (char *).
Sinon pour l'entete ctype.h, elle peut etre ommise car déjà présente dans stdlib.h.

signaler à un administrateur
Commentaire de steve_clamage le 10/08/2005 14:28:42

Pourquoi tu compiles en C++ ? Tu peux tres bien compiler en C, c'est juste une histoire d'extension du fichier source avec la plupart des edi.

signaler à un administrateur
Commentaire de DeAtHCrAsH le 10/08/2005 14:39:31

Steve_Clamage> Le gars bosse sur un projet C++. J'ai fait le code en C mais dans un .cpp car il ne va pas l'utiliser tel quel.

BruNews> Vala je viens de corriger le probleme de la fuite mémoire. J'ai monter le buffer dans les params de la fonctions.

signaler à un administrateur
Commentaire de steve_clamage le 10/08/2005 14:45:12

Mais dans ce cas il faut absolument mettre la directive extern "C", et pourquoi donner une solution C à un probleme en C++ ?

signaler à un administrateur
Commentaire de DeAtHCrAsH le 10/08/2005 14:50:12

Steve_Clamage> lol t'es l'inspecteur gadget ? Tout ce qui "marche" en C "marche" en C++. Pas besoin de ces directives de compilations. Le gars va tout simplement récuperer le code et je ne suis meme pas sure qu'il va le copier tel quel.
Cette source est plus a titre d'apprentissage que de réutilisation.

Faut que j'aille au poste pour plus de question ? ^_^

signaler à un administrateur
Commentaire de steve_clamage le 10/08/2005 15:00:39

Tout ce qui "marche" en C "marche" en C++

Justement non, c'est pour ca toute ces questions, C n'est pas compatible avec C++. Enfin c'est grave.

signaler à un administrateur
Commentaire de steve_clamage le 10/08/2005 15:05:02

C'est pas grave je voulais dire, on peut se contenter de mettre le code en extern "C", le C s'interface tres bien avec le C++.

signaler à un administrateur
Commentaire de DeAtHCrAsH le 10/08/2005 15:19:23

D'ou les guillemets que j'ai mis en écrivant "marche" ;-)

Quote : "C n'est pas compatible avec C++"
T'aurais pas oublier des guillemets aussi ? lol

Mais bon comme tu le dis ca s'interface.

signaler à un administrateur
Commentaire de steve_clamage le 10/08/2005 15:26:57

Les guillemets ? non je penses pas, ca compile ca en C++ ?

struct
{
int a;
int b;
} s = { .b = 5 };

Mais tu as raison, c ansi est à peu de chose prés (cast du void* par exemple) compatible avec C++.

signaler à un administrateur
Commentaire de vecchio56 le 10/08/2005 15:52:08 administrateur CS

Ton code est destiné à Windows apparemment; sous VC++ on peut aussi utiliser _splitpath

signaler à un administrateur
Commentaire de ledruid le 10/08/2005 20:41:16

Je confirme, c'est suite à ma demande sur le forum que il y à eu la gentillesse  de me donner un coup de main, et effectivement je suis sur un projet en c++ avec quelques contraintes ( mais je suis un vrai débutant .. lol).

Et effectivement le but n'est pas de le copier tel quel, mais plutot de m'en servir pour "apprendre".

signaler à un administrateur
Commentaire de vecchio56 le 10/08/2005 20:58:26 administrateur CS

A chaque fois tu fais deux boucles la ou tu pourrais n'en faire qu'une seule:
une boucle sur i puis une avec strncat/strcpy
Par exemple GetFileDrive pourrait devenir:
int GetFileDrive(const char* FilePath, char *tFileDrive)
{
  while(*FilePath != '\\') *tFileDrive++ = *FilePath++;
  *tFileDrive = 0;
  return 0;
}

C'est peut être plus dificile a saisir pour un débutant il est vrai.
Le premier param devrait être de type const char* au lieu de char[MAX_PATH] car on doit pouvoir mettre une chaine la taille qu'on veut

signaler à un administrateur
Commentaire de vecchio56 le 10/08/2005 20:59:37 administrateur CS

Une déclaration de ce type pourrait aussi être utile si on a besoin de faire des concaténations par la suite:

char* GetFileDrive(const char* FilePath, char *tFileDrive)
{
  while(*FilePath != '\\') *tFileDrive++ = *FilePath++;
  *tFileDrive = 0;
  return tFileDrive;
}

signaler à un administrateur
Commentaire de DeAtHCrAsH le 10/08/2005 22:43:54

Vecchio56> Vi vi en effet.... C'est la remarque que BruNews avait fait plus haut (l'histoire des boucles)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Récupération du chemin d'un fichier dans le 'path' [ par BettaSplendens ] Bonjour,j'ai 2 choses... d'un côté le chemin avec laquelle est lancée mon application, qui comporte "bien entendu" plusieurs répertoires.. désignons i Comment retrouver le path en ayant que le nom du fichier [ par Xentor609 ] salut!Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution !Avec les process, je n'obtiens que le nom du fic splitter de fichier [ par 24Karas ] salut à tousEn fait je fais un splitter de fichier mais j'ai un probleme. il me rajoute 1 octet sur la découpe et 1 octet par fichier pour la reconsti Matez ça! :) [ par MaDC ] J'ai un soucis avec mon appli MFC.Je voudrais ouvrir un document avec ça :void CCommandeRobotView::OnFileOpen() { CFileDialog fenetreDlg( true, NU courant [ par sheorogath ] comment faire pour ecrire dans un fichier dans le repertoir du fichier executable sans avoir a preciser le path (c pour un fichier destiner a etre tel Ouvrir flux sur fichier dont le chemin contient des espaces (besoin d'aide:))) [ par vychnou ] Es ce que quelqun saurait comment ouvrir un flux sur un fichier dont le nom ou le chemin contient des espaces?ex:string destination="c:\program files\ Chemin d'un fichier [ par gagah1 ] Salut à tous!Je voudrais savoir quelle fonction en API win32 dois-je appeller pour chercher le chemin d'un fichier quelconque?Merci d'avance pour les ouverture de fichier avec fopen() [ par jack_j ] Salut à tous!J'ai un petit problème avec du c. Je suis débutant et je cherche à ouvrir un fichier pour en extraire des données.Le nom et chemin du fic probleme de listage de fichiers [ par Kevin972 ] salut!! je ne comprends pas la fonction ne liste rien du tout.........al'aide!!!!!!!!!!!!!!!!! voici ma fonction:#include<stdio.h>#include<st API Win32, problème de variable [ par bouba ] Salut a tous, j'ai un blem de variable dans mon programme. Voici mon code source.LPSTR Path="";LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,749 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.