Découpage chaine de caractère - C - Programmation
Marsh Posté le 19-01-2012 à 21:23:41
bonjour,
tu fais taille=strlen(pch) pour avoir la taille du token puis nouvellechiane=malloc((taille +1)*sizeof(char)), puis strcpy(nouvellechaine, pch) et ca devrais le faire
Marsh Posté le 21-01-2012 à 11:23:44
filoo85 a écrit :
|
Salut
Si tu es sur un système récent tu peux utiliser strdup() qui fait tout ça tout seul.
De plus, si tu n'as pas perdu ta chaine originelle alors c'est inutile de "recopier" l'intégralité des sous-chaines car strtok() l'a modifiée en y insérant des '\0' là où il y avait le séparateur. Donc suffit juste de mémoriser chaque pointeur renvoyé, ils pourront être réutilisés comme des chaines entières...
Marsh Posté le 21-01-2012 à 12:52:24
Sve@r a écrit : |
Salut
Si tu es sur un système récent tu peux utiliser strdup() qui fait tout ça tout seul.
De plus, si tu n'as pas perdu ta chaine originelle alors c'est inutile de "recopier" l'intégralité des sous-chaines car strtok() l'a modifiée en y insérant des '\0' là où il y avait le séparateur. Donc suffit juste de mémoriser chaque pointeur renvoyé, ils pourront être réutilisés comme des chaines entières...[/quotemsg]C'est aussi ce que j'aurais fait.
On peut même éviter de mémoriser les pointeurs, si on se rappelle l'adresse de fin (ou la la longueur) de la chaîne originelle, et qu'on avance de sous chaîne en sous chaîne, tant qu'on a pas dépassé l'adresse de fin (la ça dépend de ce qu'on veut faire avec les sous chaines).
A+,
Marsh Posté le 21-01-2012 à 13:18:34
Effectivement, j'avais oublié le strdup qui le fait très bien.
Toutefois l'inconvénient de strdup() à mon avis est qu'il cache le malloc() sur la nouvelle chaine et qu'on risque de moins penser à appeler le free().
Enfin bref faut bien lire la doc quoi...
Marsh Posté le 21-01-2012 à 14:33:32
L'inconvénient majeur de strdup, c'est qu'il était pas dispo dans toute les implems. Fallait se faire le sien sinon (trivial).
C'est peut être plus le cas de nos jours.
A+,
Marsh Posté le 19-01-2012 à 17:28:05
Bonjour à tous,
Voila j'ai fait une petite fonction pour découper une chaine de caractère en utilisant strtok () selon un séparateur,sauf que j'affiche tous d'un coup. comment je pourrai faire pour stocker le retour de strtok () dans un tableau de chaine de caractère, afin de pouvoir utiliser par la suite chaque partie de la chaine de caractère, comme par exemple pour la chaine de caractère"hello \t world" récupéré hello dans la première case et world dans la deuxième, donc un tableau qui s'adapte à chaque chaine de caractère, mais je ne sais pas comment faire, si quelqu'un peut m'aider svp.
voila le code:
Merci d'avance.
Message édité par filoo85 le 19-01-2012 à 17:43:56