我在C中使用t->val = n;
t->h = 0;
函数。我的目标是将字符串分成较小的标记,然后将这些单独的标记分配给字符数组或字符串。这是我的代码:
strtok
有人可以帮帮我吗?
答案 0 :(得分:2)
#include <stdio.h>
#include <string.h>
int main(void)
{
char whole[100] = "Please help me";
char *token;
char *individual[50];
int i=0, n;
token = strtok(whole, " ");
while(token != NULL){
individual[i++] = token;//just store pointer or make clone = strdup(token);
token = strtok(NULL, " ");
}
n = i;
for(i = 0; i < n; ++i){
puts(individual[i]);
}
return 0;
}
char whole[100] = "Please help me";
char *token;
char individual[50][100];
int i=0, n;
token = strtok(whole, " ");
while(token != NULL){
strcpy(individual[i++], token);//copy to char array
token = strtok(NULL, " ");
}
n = i;
for(i = 0; i < n; ++i){
puts(individual[i]);
}
答案 1 :(得分:0)
关于对strtok()的调用
始终检查(!= NULL)返回的值以确保操作成功..
关于这一行:&#39;个人=令牌;&#39;
这只是指定一个指针。
建议使用:
strncpy( individual, token, sizeof( individual)-1 );
然而,&#39;请帮助我&#34;是一个字符串文字。字符串文字在只读内存中。因此调用strtok()(尝试用&#39; \ 0&#39;替换char将导致seg错误事件。
建议:
char whole[] = strdup("Please help me: );
....
free(whole);