Fonction strtok()

Résolu
Pouic182 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
Salut,
Tu veux juste l'affichage ou que ta variable contienne le changement ?
Cdlt
0
Pouic182 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   1
 
Merci pour la réponse Fiddy!
J'essaye ça et je te redis.

Cordialement.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > Pouic182 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
Hum, d'ailleurs j'ai oublié de copier le \0 final.
for(i=0;i<strlen(ch)+1;i++)
0