begin process at 2012 05 28 23:10:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

convertir chemin d'un fichier


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

convertir chemin d'un fichier

jeudi 13 avril 2006 à 19:15:48 | convertir chemin d'un fichier

boumarsel

bonjour,
une fonction me retorune un chemin sous format :
/physicaldrive/mondossier/fichier1 (je me rappelle pas exactement, mais c'est pas loin de ça, ça doit etre physicaldrive0 pour les fichier de la partition c)
alors je veux le convertir en c:\mondossier\fichier1
(win32 api)
merci
jeudi 13 avril 2006 à 22:07:24 | Re : convertir chemin d'un fichier

excrt

/*
 * 2006/04/13
 *
 * main.c
 *
 */
#include <ctype.h> /* isdigit() */
#include <stdio.h> /* puts() */
#include <stdlib.h> /* atoi()/free() */
#include <string.h> /* _strdup() */

/*
 * constantes
 */
static const char _DRIVE[] = {/*'A', 'B',*/
    'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',\
    'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
#define _DRIVE_COUNT        ((sizeof(_DRIVE) / sizeof(_DRIVE[0])) - 1)

static const char* _PHYSICAL_DRIVE = "physicaldrive";
#define _PHYSICAL_DRIVE_LENGTH  (sizeof("physicaldrive") - 1)

/*
 * fonctions locales
 */
static __inline void __stdcall _slash_to_backslash(char* string);
static int __stdcall _convert_pathname(char* pathname);

/*
 * main()
 */
int __cdecl main()
{
    char* path = _strdup("/physicaldrive0/dossier 1/dossier 2/mon fichier.txt");
    //char* path = _strdup("test");
    //char* path = _strdup("////test/////");
    //char* path = _strdup("/physicaldrive1234\\test");
    //char* path = _strdup("/physicaldrive////");
    //char* path = _strdup("physicaldrive121/dossier 1/dossier 2/mon fichier.txt");

    _convert_pathname(path);
    puts(path);

    free(path);
    return 0;
}

/*
 * remplace tous les '/' par des '\\'
 */
static __inline void __stdcall _slash_to_backslash(char* string)
{
    for (; *string != '\0'; string++)
    {
        if (*string == '/') {
            *string = '\\';
        }
    }
}

/*
 * from:
 *  - [/]physicaldrive<N>[/folder1[/folder2[/...]]]
 * to:
 *  - <D>:\\[folder1[\\folder2[\\...]]]
 *
 * <N>  => Number
 * <D>  => Drive
 *
 */
static int __stdcall _convert_pathname(char* pathname)
{
    unsigned drive_index;
    char* left = pathname;

    _slash_to_backslash(pathname);

    if (*pathname == '\\') {
        pathname++;
    }
    if (_strnicmp(pathname, _PHYSICAL_DRIVE, _PHYSICAL_DRIVE_LENGTH) == 0)
    {
        /* skip « physicaldrive » */
        pathname += _PHYSICAL_DRIVE_LENGTH;

        if ( isdigit(*(unsigned char*)pathname) )
        {
            if ((drive_index = (unsigned)atoi(pathname)) > _DRIVE_COUNT) {
                drive_index = _DRIVE_COUNT;
            }
            /* skip number */
            while ( isdigit(*(unsigned char*)pathname) ) {
                pathname++;
            }
            *left++ = _DRIVE[drive_index];
            *left++ = ':';

            while ((*left++ = *pathname++) != '\0') {
                /*nothing*/
            }
            return 1; /* SUCCESS */
        }
        /*
        else {
            return 0; // ERROR: invalid drive number
        }
        */
    }
    return 0; /* ERROR: invalid pathname */
}

/****************************************************/

C:\dossier 1\dossier 2\mon fichier.txt
Press any key to continue


-=-= ExCRT =-=-
jeudi 13 avril 2006 à 22:58:43 | Re : convertir chemin d'un fichier

BruNews

Administrateur CodeS-SourceS
A quoi sert le tableau _DRIVE[] ???

*left++ = _DRIVE[drive_index];
deviendrait: *left++ = drive_index + 'C';

ciao...
BruNews, MVP VC++
vendredi 14 avril 2006 à 03:54:49 | Re : convertir chemin d'un fichier

excrt

oui, tout a fait

-=-= ExCRT =-=-
lundi 17 avril 2006 à 19:59:34 | Re : convertir chemin d'un fichier

boumarsel

je vous remercie pour votre effort mais ce que je demande c'est tout simplement une fonction API pour convertir le chemin de "device\harddisk0\mondossier\fichier" (je me suis trompé au début) à "c:\mondossier\fichier".
il y a certainement une fonction pour le faire sans implémenter tous ces lignes de code, le chemin "device\harddisk0\..." que je cherche à convertir est renvoyé par la fonction API getMappedFile (si je me rappelle bien).
j'ai testé qq fonctions que j'ai trouvé dans la section "path" et "drive" de la documentation MSDN mais ça n'a pas marché
(c'est du win32api non pas du turbo c ;) )

je vous remercie encore une fois pour votre effort, il sont de plus en plus rares les développeurs qui sont préts à sacrifier bcp de temps pour répondre à des questions sur ce forum.
mardi 18 avril 2006 à 16:37:17 | Re : convertir chemin d'un fichier

excrt

rien à voir avec « TurboC », c'est du C carrément. L'API Windows est elle-même codé en C et en C++. « TurboC » n'est pas un langage mais un compilateur ... Je ne crois pas que tu puisse trouver une fonction dans l'API Windows qui permet de convertir ton « path » mais, bonne recherche ...

-=-= ExCRT =-=-
mardi 18 avril 2006 à 20:07:29 | Re : convertir chemin d'un fichier

boumarsel

je préfére ne pas orienter la déscussion à qq chose d'inutile, j'ai une question et je cherche une réponse, si tu n'as pas une information utile ferme cette page et cherche ailleur. me reste à te signaler que c'est pas à toi de me montrer la différence entre un langage et un compilateur ou ide, et si je l'ai dit dans mon msg c'est pour la simple raison que j'aime appeler comme ça tout programme du genre.
dimanche 23 avril 2006 à 17:32:50 | Re : convertir chemin d'un fichier

excrt

ooohhhh mais on ce calme mon petit ... si tu n'aimes pas cette « petite remarque », c'est ton problème. je n'ai pas crié, je ne t'ai pas insulté, ni rien d'autre du genre, alors prends une grande inspiration et expire lentement ... TurboC est un compilateur et non un langage(il n'y a rien de méchant/insultant/... dans cette phrase).

-=-= ExCRT =-=-


Cette discussion est classée dans : fichier, convertir, chemin, fichier1, mondossier


Répondre à ce message

Sujets en rapport avec ce message

transferer des lignes d'un fichier vers un autre? [ par requinB ] bonjour,qlq'un peut maider?, je veux ajouter des lignes d'un fichier (toutes) sur un autre fichier(en mode ajout), ...est ce que cela est bon:fichier1 Convertir un fichier de C en Pascal [ par Frank ] Quelqu'un sait ou je pourrais trouver un bon petit programme pour convertir un fichier de C en Pascal !?!Merci D'avance !Frank 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 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 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#include#include#include#in comment faire??? [ par slim ] Bonjour!je voudrais bien savoir comment convertir un fichier texte en un fichier Access en utilisant un programme C++!j'aimerais bien encore savoir co Chemin de fichier avec fopen en tant que variable (gros débutant) [ par jason_red2 ] Je m'explique:La fonction fopen admet, en tant qu'argument,des const char*, ce qui implique de définir le Path soit par une constante, un typedef pass


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,437 sec (4)

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