也许标题可能令人困惑,但是我的意思是我有一个如下代码:
char str[25]="hello my name is ";
const char ayir[]=" ";
char *token;
token=strtok(str,ayir);
while( token !=NULL ) {
printf( "%s\n", token );
token = strtok(NULL, ayir);
}
并且我只想将具有4个字符串的变量(令牌)分配给新字符串数组,例如“ hello”,“ my”,“ name”,“ is”,例如“ char * string [4]”。 /> 但是,到目前为止我还没有取得成就。
答案 0 :(得分:2)
请记住,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);
}