Помните, что strtok
не создает новые строки.Особенно, если вы хотите повторно использовать токенизированную строку, вы должны скопировать токены в новую память.
Если ваш входной буфер не используется повторно, то это простая версия:
#define MAX_TOKENS 4
char str[25]="hello my name is ";
const char ayir[]=" ";
char *token, *tokens[MAX_TOKENS];
int i= 0;
token=strtok(str,ayir);
while (token !=NULL && i<MAX_TOKENS) {
tokens[i]= token;
printf( "%s\n", tokens[i] );
i++;
token = strtok(NULL, ayir);
}
Если ваш входной буфер используется повторно, вы также должны выделить новую память:
#define MAX_TOKENS 4
char str[25]="hello my name is ";
const char ayir[]=" ";
char *token, *tokens[MAX_TOKENS];
int i= 0;
token=strtok(str,ayir);
while (token !=NULL && i<MAX_TOKENS) {
tokens[i]= malloc(strlen(token)+1);
strcpy(tokens[i], token);
printf( "%s\n", tokens[i] );
i++;
token = strtok(NULL, ayir);
}