gpt4 book ai didi

c - 如何将拆分的字符串分配给新变量?

转载 作者:行者123 更新时间:2023-11-30 18:46:12 28 4
gpt4 key购买 nike

也许标题可能会令人困惑,但我的意思是我的代码如下:

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”的变量( token )分配给新的字符串数组,如“char *string[4]”。
然而,到目前为止我还没有实现。

最佳答案

请记住,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);
}

关于c - 如何将拆分的字符串分配给新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52578310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com