strtok()

Voir le sujet précédent Voir le sujet suivant Aller en bas

strtok()

Message  didi le Jeu 27 Oct 2011, 17:54

bonsoir

j'ai une erreur d'execution quand j'utilise la fonction strtok
avec les pointeurs
Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   int i;
   char *str = "imback",*limit = "b",*result ;
   printf("\nLa str vaut : %s",str);
   result = strtok(str,limit);  /* erreur d'execution ici déja */
   printf("\nLa result vaut : %s",result);
   return 0;
}

mais ça fonction bien avec les tableaux de carecteres

Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   int i;
   char str[] = "im back",limit[] = "b",*result ;
   printf("\nLa str vaut : %s",str);
   printf("\n");
   result = strtok(str,limit);
   printf("\nLa result vaut : %s",result);
   return 0;
}
resultats : La str vaut : imback
La result vaut : im



merci de m'aider Smile

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: strtok()

Message  smb le Jeu 27 Oct 2011, 20:08

didi a écrit:bonsoir

j'ai une erreur d'execution quand j'utilise la fonction strtok
avec les pointeurs
Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   int i;
   char *str = "imback",*limit = "b",*result ;
   printf("\nLa str vaut : %s",str);
   result = strtok(str,limit);  /* erreur d'execution ici déja */
   printf("\nLa result vaut : %s",result);
   return 0;
}


C'est normal parce que str pointe vers la chaîne constante "imback", bien que str ne soit pas déclaré comme tel ! Comme le strtok modifie la zone pointée par son 1er argument, et que cette zone est "protégée" en écriture -> segmentation fault

Tu peux vérifier ce que je dis en faisant, après la déclaration de
char * str = "imback" ;
une tentative de modification de ce type :
str[3]='X';



smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum