将字符指针的值分配给字符数组

时间:2015-05-05 01:58:27

标签: c arrays

我在C中使用t->val = n; t->h = 0; 函数。我的目标是将字符串分成较小的标记,然后将这些单独的标记分配给字符数组或字符串。这是我的代码:

strtok

有人可以帮帮我吗?

2 个答案:

答案 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);