Fonction strtok()

Résolu/Fermé
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 - 24 mars 2009 à 19:09
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 mars 2009 à 14:33
Bonjour,
Je souhaiterais savoir les arguments de la fonction strtok(), si quelqu'un peut m'aider.
En effet, je cherche à remplacer mes ';' par des ' - ', mais lorsque que j'ai des ';' qui se suivent il ne m'affiche pas les ' - '.

Pour plus de faciliter voici un bout mon programme :
-->Programme :
lignes_coupees = strtok (contenu_par_ligne, ";");
while (lignes_coupees != NULL)
{
printf ("%s - ",lignes_coupees);
lignes_coupees = strtok (NULL, ";");
}

Exemple :
132456789;albert;nicolas;;;x
-->me donne : 132456789 - albert - nicolas - x
-->alors que je voudrais avoir : 132456789 - albert - nicolas - - - - x

Par avance merci!
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
24 mars 2009 à 19:22
Salut,
Tu veux juste l'affichage ou que ta variable contienne le changement ?
Cdlt
0
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 1
25 mars 2009 à 09:04
Salut Fiddy,
Dans un premier temps, je voudrai que ma variable contienne le changement pour pouvoir ensuite l'afficher.

Cordialement.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
25 mars 2009 à 14:02
Tu pourrais utiliser :
void modif(char *buf, const char *ch, char x, const char *motif){
    size_t i,j=0;

    for(i=0;i<strlen(ch);i++) {
        if(ch[i]==x){
            buf[j]='\0';
            strcat(buf,motif);
            j+=strlen(motif);
        }
        else
            buf[j++]=ch[i];
    }
}

L'appel à la fonction se ferait par : modif(nouvelleChaine, ancienneChaine, ';', " - " );
Par contre, il faut penser à réaliser l'allocation de nouvelleChaine. Mais bon, ça se fait simplement avec malloc. ;-)).
Cdlt
0
Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010 1
25 mars 2009 à 14:24
Merci pour la réponse Fiddy!
J'essaye ça et je te redis.

Cordialement.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > Pouic182 Messages postés 15 Date d'inscription mardi 24 mars 2009 Statut Membre Dernière intervention 12 février 2010
25 mars 2009 à 14:33
Hum, d'ailleurs j'ai oublié de copier le \0 final.
for(i=0;i<strlen(ch)+1;i++)
0