Fonction strtok()

Résolu
Pouic182 Messages postés 14 Date d'inscription   Statut Membre -  
fiddy Messages postés 441 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!
Configuration: Windows XP
Firefox 2.0.0.20

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Tu veux juste l'affichage ou que ta variable contienne le changement ?
    Cdlt
    0
  2. Pouic182 Messages postés 14 Date d'inscription   Statut Membre 1
     
    Salut Fiddy,
    Dans un premier temps, je voudrai que ma variable contienne le changement pour pouvoir ensuite l'afficher.

    Cordialement.
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. Pouic182 Messages postés 14 Date d'inscription   Statut Membre 1
       
      Merci pour la réponse Fiddy!
      J'essaye ça et je te redis.

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