Fonction strtok()

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,
    Tu veux juste l'affichage ou que ta variable contienne le changement ?
    Cdlt
    1. Salut Fiddy,
      Dans un premier temps, je voudrai que ma variable contienne le changement pour pouvoir ensuite l'afficher.

      Cordialement.
      1. Contributeur
        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
        1. Merci pour la réponse Fiddy!
          J'essaye ça et je te redis.

          Cordialement.
        2. Contributeur
          @Pouic182Hum, d'ailleurs j'ai oublié de copier le \0 final.
          for(i=0;i<strlen(ch)+1;i++)