Bonjour,


il y a un truc que j aimerais qu on m expliquer sur l allocation de memoire


genre ce code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
char haystack[] = "This code works.";
char *haystack2 = "This code dont works.";
 
char * token;
token = strtok(haystack, " ");
 
printf("%s\n",haystack);
printf("%s\n",haystack2);
 
token = strtok(haystack2, " ");

Si je declare haystack avec un char[] aucun probleme avec strtok (ou strcpy c juste un exemple)


Par contre avec un char* ca marche pas , que fait le compilateur alors puisque je peux quand meme afficher correctement la chaine ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
char *haystack2 = "This code dont works.";
printf("%s\n",haystack2);

Je sais qu en faisant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 char string[] = "This code works";
        char *haystack = NULL;
        char * token = NULL;
        haystack = (char*) malloc (sizeof(string));
        strcpy(haystack,string);
        token = strtok(haystack, " ");
Je resoud mon probleme mais j aimerais comprendre ce qui se passe exactement au niveau du code quand je fais un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char *chaine ="quelque chose"
qui fait que les fonctions comme strtok plante

Merci