Split/explode d'une chaine

Résolu
cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005 - 11 août 2005 à 15:10
cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005 - 16 août 2005 à 10:46
bonjour tt le monde,

je cherche une fonction qui ferait a peu pres la même chose que explode en php,

a savoir decouper une chaine suivant un delimiteur, qui sera lui aussi une chaine.



par exemple si ma chaine est aaaazebbbbbzezeccccczezedddd

la fonciton me retourne un tableau avec poyur res :

aaaa

bbbb

(vide)

cccc

'vide)

dddd

j'ai essayer de voir avec strtok mais bon, ca prend une chaine comme
delimiteur, mais ca traite la chaine comme un ensemble de délimiteurs...



Si vous savez ou je peux trouver qqchose du genre.

Au fait je taf en C.



Merci beaucoup

8 réponses

steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
11 août 2005 à 17:45
grillé :D
tu peux simplifier cette ecriture
tab[0]=(char*)malloc((size+1)*sizeof(char));
par
tab[0]= malloc(size+1);
c'est plus clair, non ?
3
BunoCS Messages postés 15474 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 22 avril 2024 103
11 août 2005 à 15:25
tu peux regarder du côté de strstr(str1,str2).
c'est pas vraiment ce que tu veux mais ça te retourne la 1ère occurence de la chaine str2 dans str1...
En faisant une boucle, tu devrais réussir

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
11 août 2005 à 16:07
En résultat, tu veux vraiment une tableau de chaines de caractères ? Un tableau d'entier qui contient le nombre d'occurences de chaque caractère ne te suffirait pas ? Ce serait plus facile à coder...
0
cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005
11 août 2005 à 17:22
oui je veux recupere les morceaux de chaines entre les séparateur donc un tableau de chaines serait le plus approprié.



en ce qui concerne strstr supposons que j'ai ca :

const char *largestring = "Foo Bar Baz";
const char *smallstring = "Bar";
char *ptr;
ptr = strstr(largestring, smallstring);

est ce qu'il ya moyen de calculer la position pos de Bar dans
largestring de facon à recuperer largestring[0] jusqu'à
largestring[pos] (qui serait donc la première chaine à sauver)?

merci en tt cas pour vos reponses
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
11 août 2005 à 17:31
oui, la difference des deux adresses (typées)

if( ptr = strstr(largestring, smallstring) )
{
size_t pos = ptr - largestring;
}
0
BunoCS Messages postés 15474 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 22 avril 2024 103
11 août 2005 à 17:36
char * tab[10];
const char *largestring = "Foo Bar Baz";
const char *smallstring = "Bar";
char *ptr;
int size;


ptr = strstr(largestring, smallstring);
size=ptr-largestring;
tab[0]=(char*)malloc((size+1)*sizeof(char));
strncpy(tab[0],largestring,size);
tab[0][size]='\0';

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
BunoCS Messages postés 15474 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 22 avril 2024 103
11 août 2005 à 17:36
argh!! pas assez vite

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005
16 août 2005 à 10:46
merci pour la reponse, j'accepte la derniere de steve_clamage mais merci aussi a buno.

Une chtite boucle et le tour est joué



merci!!!!!
0
Rejoignez-nous