Я пытаюсь получить токен из строки, которая ограничена пробелом (""). Но следующий код сбой приложения, когда строка имеет тип char *.strtok_s сбой программы, когда строка имеет 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;
}
Я также получаю следующие предупреждения:
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);
спасибо. Но как я могу использовать strtok_s для изменения строки? Какой тип должен иметь строка? –
* изменить строку и получить токен. Например, строка, с которой я работаю, - «echo par par». Как я могу использовать эту функцию для получения «эха»? –
Просто не передавайте ему указатель на константу. Вы можете сделать это «char str1 [] =« hello world »;' или как этот 'char * ptr = strdup (« hello world »);' или 'char buf [80]; strcpy (buf, «hello world»); '- что угодно. Просто не передавайте ему указатель на константу. –