繁体   English   中英

如何分配拆分为新变量的字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM