[英]How to Assign String that is split to new Variables?
标题可能会造成混淆,但是我的意思是我有一个如下代码:
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个字符串的变量(令牌)分配给新字符串数组,例如“ char * string [4]”,它们分别是“ hello”,“ my”,“ name”,“ is”。
但是,到目前为止我还没有实现。
请记住, 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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.