Remplacer dans une string dans Dev-cpp

[Résolu]
Signaler
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
-
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
-
Bonjour
j'ai une variable char qui contient un chemin d'accès au disque et j'aimerais que quand je fait : ".." sa supprime le dernier dossier rentrer par exemple :
C:\windows\
et que je fais: ".."
cela me donne C:\
Comment faire ?

Sébastien Metthez
www.sebastien-metthez.com

11 réponses

Messages postés
15151
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 octobre 2021
99
Voici un bout de code qui, si j'ai bien compris, fait ce que tu veux:

char ch1[MAX_PATH]="C:\\dev\\travail\\rep1";    // Chaine de test
char *p=strrchr(ch1,'\\');     // Recherche du répertoire parent
strcpy(p,"\\rep2");      // Modification du répertoire

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Ton problème est mal exprimé.
Si j'ai bien compris : "Tu veux pour un chemin donné récupérer le nom du lecteur logique."

Si oui procéde comme ça (Sous Visual C++):

const char * path = "C:\\Windows";
char  drive [_MAX_PATH];
char  dir   [_MAX_PATH];
char  fname [_MAX_PATH];
char  ext   [_MAX_PATH];

_splitpath (path, drive, dir, fname, ext);

printf ("votre lecteur logique est %s\n", drive);
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

en fet pas obligatoirement le disque se peut par exemple :
C:\mes docs\mes images\
en
C:\mes docs\
Sébastien Metthez
www.sebastien-metthez.com
Messages postés
15151
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 octobre 2021
99
Salut,
Tu recherche dans ta chaine l'avant dernier caractère '\' (ou le 2e en partant de la fin). Ensuite, ce que tu veux est compris entre le pointeur de début et celui retourner par la recherche.
Regarde du côté de strrchr() en C si tu ne comprend pas...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

je comprens pas .. dsl

Sébastien Metthez
www.sebastien-metthez.com
Messages postés
15151
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 octobre 2021
99
Regarde la doc de la fonction strrchr()

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

j ai regardé mais je vois pas a quoi cela me sert parce que je doit remplacer tout un morceau de chaine
en php il y a str_replace cela marche en c??
Messages postés
198
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
18 mars 2011
1
Tu peux, je pense, uitliser les fonctions:
SetCurrentDirectory()  ou  chdir() ...
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Je suis avec "buno" dans le fait qu'il cherche le dernier "\".

char * path = "C:\\Windows\";

// supprimer le '\\' de la fin du path
if (path [strlen (path) - 1] == '\\') {
   
path [strlen (path) - 1] = '\0';


}

// modifier le path
char * p = strrchr (path, "\");
if (p != NULL) {
    path [p-path] = "\0";
}

// ton path est modifié
puts (path);
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

Je suis avec "buno" dans le fait qu'il cherche le dernier "\".

char * path = "C:\\Windows\";

// supprimer le '\\' de la fin du path
if (path [strlen (path) - 1] == '\\') {
   
path [strlen (path) - 1] = '\0';


}

// modifier le path
char * p = strrchr (path, "\");
if (p != NULL) {
    //path [p-path] = '\0';
    *p = '\0';
    strcpy (path, "\");
}

// ton path est modifié
puts (path);
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008

Merci a tous me m'avoir aidé MERCI !!!!!