Bah oui désolé lol [Résolu]

Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
- - Dernière réponse : steve_clamage
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
- 17 août 2005 à 10:42
Sincérement désolé d'être une quiche mais bon

Les vacances ça me fait oublier certaines choses (enfaite c'est pas les vacances, c'est juste moi qui sait pas mais chut)

Donc voilà

J'arrive pu à découper une chaine de caractère... :'(



Genre j'ai Buff : "Program Files;C:\Program Files;SoundMan;C:\Windows\SoundMan.exe"

Bé je voudrais extraire tous les termes avant les ;



j'ai bien essayé genre :

char *c = Buff;

while(*c != '\0')

{

while(*c != ';')

{

//La je sais plus lol

c++:

}

c++;

}

J'voudrais bien pouvoir me passer de strch je sais pas trop quoi là :p

Thanks :p

void Aurevoir( void ); //Bonne journée
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
3
Merci
Avec strtok par exemple.

http://www.cplusplus.com/ref/cstring/strtok.html

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de steve_clamage
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
3
Merci
T'a corrigé ? Enlève l'étoile devant c



char *c = strtok(Buff, ";");

while( c != NULL) // pas *c

{

MessageBox(NULL, c, NULL, 0x40);

c = strtok(NULL, ";");

}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de steve_clamage
Messages postés
371
Date d'inscription
dimanche 4 janvier 2004
Dernière intervention
23 septembre 2009
3
Merci
La fonction getline se charge de tout ....



#include<sstream>



int main()

{

std::istringstream is( Buffer );

char c[256];

while( is.getline( c, 256, ';' ) )

MessageBox(0,c,0,...blabla...MFC...

}


Cordialement,
Xterminhate.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de xterminhate
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
va dépendre de ce qu'il faudra faire des différentes parties.
Prépare un truc bien clair pour demain.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
0
Merci
Bé en faite j'explique :) lol

Donc ma fonction veut charger toutes les caractéristiques d'un utilisateur

En sachant que les caractéristiques sont le nom des raccourcis et leur chemin

En considérant que dès que je récupere ces 2 caractéristiques, je peux
créer un objet SHORTCUT et l'ajouter à mon utilisateur, je voudrais
tout les 2 ";" découper la partie récupéré en 2 lol

C'est dur à expliquez rolala



Bon genre dans mon fichier il y a "Program Files;C:\Program Files;SoundMan;C:\Windows\SoundMan.exe"



Le programme récupéré la partie Program Files;C:\Program Files

Et le découpéré en 2 jusqu'au ";" pour ensuite créer un objet raccourci :s



Désolé de pas être clair lol

Je crains je sais, je ne me comprend pas moi même alors euh bonne chance :$


void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
0
Merci
Bé en effet ça marche très bien

Mais il me plante à la fin...

Comprend pas trop



char *c = strtok(Buff, ";");

while(*c != NULL)

{

MessageBox(NULL, c, NULL, 0x40);

c = strtok(NULL, ";");

}
ça viendrait ptete du fait qu'il y'a le caractère ; juste avant la fin non ?
void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
0
Merci
while (c != NULL) ne déférence pas c
Commenter la réponse de steve_clamage
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
0
Merci
C'est pourtant le même principe que dans l'exemple que tu m'as donné...

C'est étrange lol

void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
0
Merci
Ah en effet, lol

J'vous en voudrais pas si vous aviez envie de me jeter quelques pierre ;)



Merci bien Mr :p
void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
0
Merci
Ahhhh lol j'aurais bien essayé mais la vu que tout y marche bien mdr :p

J'ai trop peur :$

Mais en faite je l'avais déjà utilisé une fois et en effet elle marche très bien ;)
void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
371
Date d'inscription
dimanche 4 janvier 2004
Dernière intervention
23 septembre 2009
0
Merci
Avec ta dernière réponse, on a vraiment l'impression que tu as écrit un code à la fois robustesse et stable ! ^_^ Bon courage...
Commenter la réponse de xterminhate
Messages postés
1791
Date d'inscription
lundi 22 novembre 2004
Dernière intervention
31 janvier 2009
0
Merci
On sent de l'ironnie lol, on se fou pas de moi hein :p

D'abord j'fais pour que le prog marche :)

Ensuite, on voit l'optimisation :D

void Aurevoir( void ); //Bonne journée
Commenter la réponse de cs_Joky
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
0
Merci
Comme d'habitude la question est de savoir si c'est du C ou du C++,
quand je vois des chaines C c'est du C pour moi alors je donnes la
solution en C
Commenter la réponse de steve_clamage
Messages postés
371
Date d'inscription
dimanche 4 janvier 2004
Dernière intervention
23 septembre 2009
0
Merci
Stevy > Par défaut, je crois que tu peux filer la solution C++ parce que quasiment plus personne n'utilise un compilateur pur C...

Jorky > Fait nous un jolie topic unique à la Jorky's touch.

Balance tout le code d'un coup, voire dit nous ce que tu veux faire globalement. Ca t'évitera de devoir découper ton code en petits fragments et faire de multiples posts ;-) Je plaisante....
Commenter la réponse de xterminhate
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
strtok devrait être banni, ça insère des variables implicites dans le prog "à l'insu de notre plein gré" et c'est source de plantage, par exemple appels simultanés en multi threading.
Se fera bien plus surement avec 2 pointeurs et rien de plus.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
0
Merci
strtok n'est pas threadsafe, c'est écris dans la doc il me semble.
Commenter la réponse de steve_clamage
Messages postés
371
Date d'inscription
dimanche 4 janvier 2004
Dernière intervention
23 septembre 2009
0
Merci
En effet, on oublit souvent de bien vérifier que les algorithmes de base ne sont pas systématiquement thread safe....
Commenter la réponse de xterminhate
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
Exemple à la va vite:

// MODIFIE LA CHAINE EN PARAM !!!
void __stdcall Morceaux(char *psz)
{
char *c, *p, *out;
out = psz + strlen(psz);
p = psz;
while(*p == ';') p++; // ON NE SAIT JAMAIS
if(!*p) return;
nextPASS:
c = p;
while(p < out) {
if(*p == ';') break;
p++;
}
*p = 0;
MessageBox(0, c, "R", 0);
if(++p < out) goto nextPASS;
}


int WINAPI WinMain(HINSTANCE h, HINSTANCE x, LPSTR y, int z)
{
char buf[80];
strcpy(buf, "Program Files;C:\\Program Files;SoundMan;C:\\Windows\\SoundMan.exe");
Morceaux(buf);
return 0;
}

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
0
Merci
Pour que ce soit modulable faudrais carrement retourner un char** et
une taille, et faire ca proprement en C (avec tout les controles
d'erreurs) c'est tres laborieux.

Faut voir strtok_r et strsep de la glibc.
Commenter la réponse de steve_clamage

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.