begin process at 2010 02 10 16:26:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > DECOUPAGE CHEMIN FICHIER (FORUM)

DECOUPAGE CHEMIN FICHIER (FORUM)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 992 / 284

Auteur : DeAtHCrAsH

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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)

 Sources du même auteur

Source avec Zip Source avec une capture PARAMETRAGE CARTES RESEAUX (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture DRAG AND DROP DE FICHIERS (MFC) (FORUM)
Source avec Zip TIMER (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture PROGRAME MULTI-DIALOG (VC++ SANS MFC) (FORUM)
Source avec Zip Source avec une capture ALTERNATIVE AU MESSAGEBOX : COMMENT TRACER UN PROGRAMME A L'...

 Sources de la même categorie

Source avec Zip Source avec une capture ID3 TAG COVER ALBUM IMAGE par nanonavich
FILEREADER par FrancoisGauthier
Source avec Zip CLASSE AVANCÉE DE LOG, THREAD SAFE ET DIVERSES SURCHARGES par sboli
Source avec Zip Source avec une capture Source .NET (Dotnet) INFILESEEKER par swonder
Source avec Zip Source avec une capture USB DETECTION par abandonware

 Sources en rapport avec celle ci

FICHIER ALBUM MUSICAL par imenouuuuuuuuuche
COPIE AVEC SHFILEOPERATION par steph12358
Source avec Zip CHANGEUR DATE FICHIER (WIN32) par BruNews
Source avec Zip Source avec une capture TRANSFERT DE FICHIER TCP [GCC - GTK] par ganjarasta
SIMPLE FONCTION TOKENIZE par spidermario

Commentaires et avis

Commentaire de xterminhate le 10/08/2005 12:37:47

Rapide.... ;-)

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.

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.

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.

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.

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.

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++ ?

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 ? ^_^

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.

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++.

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.

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++.

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

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".

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

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;
}

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 1,373 sec (4)

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