Selection dans une chaine

Signaler
Messages postés
14
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2009
-
Messages postés
14
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2009
-
Bonjour, je débute en C++ et je voudrais recuperer dans une chaine de navigation trois parties.
Exemple:
C:\Program Files\QuickTime\Plugins\

sur 2 variables
1er variable: Plugins
2eme variable: QuickTime
3eme variable: C:\Program Files\

Biensûre ma ligne d'exemple varie et la longueur aussi.
Le but du jeux est d'avoir dans la variable1 le dernier dossier, dans la variable2 l'avant dernier dossier et dans la varibale 3 tous ce qu'il y a avant la variable2.

Merci beaucoup, de votre aide.

4 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
J'ai juste le temps de faire quelque chose de vite fait:

<meta http-equiv= "Content-Type" content="text/html; charset=UTF-8" /><meta name="Generator" content="Kate, the KDE Advanced Text Editor" />char test[] = "C:\\Program Files\\QuickTime\\Plugins\";
char *slash[32], *ptr[32], *c = &test[0];
int i = 0, j;

do if(*c '\\') slash[i++] c; while (*++c);
j = --i;
while(j >1) *slash[j--] 0;
ptr[0] = &test[0]; j = 1;
while (j < i) ptr[j] slash[j++]+1;

ptr[0] devrais contenir "C:\Program Files", ptr[1] "QuickTime" et ptr[2] "Plugins"

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Y'a eu un problème à l'envoie... Revoici le code:

char test[] = "C:\\Program Files\\QuickTime\\Plugins\";
char *slash[32], *ptr[32], *c = &test[0];
int i = 0, j;
    do if(*c '\\') slash[i++] c; while(*++c);
j = --i;while(j >1)  *slash[j--] 0;
ptr[0] = &test[0]; j = 1;while(j <i) ptr[j] slash[j++]+1;

C++ (@++)<!--
Messages postés
280
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
8 juillet 2014
4
salut il faut faire du traitement de chaine en C:

char **parser_chemin_fichier(char *chaineaparser) {
// exemple: char chaineaparser[] = "C:\\123\\456\\a.txt";

char *copiedechaineaparser = malloc (strlen(chaineaparser));
strcpy(copiedechaineaparser,chaineaparser);

char *c = copiedechaineaparser,
*tmp,
**tableau_chemin=malloc(1*sizeof*tableau_chemin);
int i=0;

if (*c '\\') tmp c+1;
else tmp = c;

while (1) {
if (*c == '\\') {
*c = 0;
if (strlen(tmp) > 0) {
tableau_chemin[i++] = tmp;
tmp = c+1;
tableau_chemin = realloc(tableau_chemin,(i+1)*sizeof*tableau_chemin);
}
}
else if (! *c) { tableau_chemin[i] = 0; return tableau_chemin; }
c++;
}
}

ou apprendre les fonctions de la lib standard C++
Messages postés
14
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
17 juillet 2009

Merci pour vos réponses.