J'essaie d'obtenir un jeton d'une chaîne délimitée par un espace (""). Mais le code suivant bloque l'application lorsque la chaîne est de type char *.strtok_s plante le programme lorsque la chaîne est de type char *
#include <stdio.h>
#include <string.h>
int main(){
char *str1 = "Hello World!"; //char str1[] works
char *token;
char *savePtr;
token = strtok_s(str1, " ", &savePtr);
printf("%s", token);
return 0;
}
Je reçois aussi les avertissements suivants:
C:\Users\Haris\Desktop\C files>gcc firstProgram.c -o firstprogram.exe
firstProgram.c: In function 'main':
firstProgram.c:10:9: warning: implicit declaration of function 'strtok_s' [-Wimplicit-function-declaration]
token = strtok_s(str1, " ", &savePtr);
^
firstProgram.c:10:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
token = strtok_s(str1, " ", &savePtr);
Merci. Mais alors comment puis-je utiliser strtok_s pour modifier une chaîne? Quel type devrait avoir la chaîne? –
* modifier une chaîne et obtenir un jeton. Par exemple, la chaîne avec laquelle je travaille est "echo par par". Comment puis-je utiliser cette fonction pour obtenir "echo"? –
Juste ne le passe pas un pointeur vers une constante. Vous pouvez le faire 'char str1 [] =" hello world ";' ou comme ceci 'char * ptr = strdup (" bonjour monde ");' ou 'char buf [80]; strcpy (buf, "bonjour monde"); '- peu importe. Ne lui passez pas un pointeur vers une constante. –