C 将字符指针的值赋给字符数组

C 将字符指针的值赋给字符数组,c,arrays,C,Arrays,我正在使用C中的strtok函数。我的目标是将字符串划分为较小的标记,然后将这些标记分配给字符数组或字符串。这是我的密码: int main(void) { char whole[100] = "Please help me"; char *token; char individual[100]; token = strtok(whole, " "); individual = token; //I don't know what code fits in h

我正在使用C中的
strtok
函数。我的目标是将字符串划分为较小的标记,然后将这些标记分配给字符数组或字符串。这是我的密码:

int main(void)
{
   char whole[100] = "Please help me";
   char *token;
   char individual[100];

   token = strtok(whole, " ");
   individual = token;   //I don't know what code fits in here
}
有人能帮我吗?

关于打给strtok()的电话

始终检查(!=NULL)返回值以确保操作成功

关于行:“个人=令牌;”

这只是分配一个指针

建议使用:

strncpy( individual, token, sizeof( individual)-1 );
但是,“请帮助我”是字符串文字。字符串文字位于只读内存中。因此,调用strtok()(尝试用“\0”替换字符)将导致seg错误事件

建议:

char whole[] = strdup("Please help me: );
....
free(whole);
#包括
#包括
内部主(空)
{
char-whole[100]=“请帮帮我”;
字符*令牌;
字符*个人[50];
int i=0,n;
token=strtok(整个“”);
while(令牌!=NULL){
单个[i++]=token;//只需存储指针或使clone=strdup(token);
令牌=strtok(空,“”);
}
n=i;
对于(i=0;i

char-whole[100]=“请帮帮我”;
字符*令牌;
字符个人[50][100];
int i=0,n;
token=strtok(整个“”);
while(令牌!=NULL){
strcpy(单个[i++],标记);//复制到字符数组
令牌=strtok(空,“”);
}
n=i;
对于(i=0;i
你得到的输出是什么?谷歌又倒下了吗?你提出的问题毫无意义。你不能简单地将
令牌
分配给
个人
。你需要使用
strcmp
。看一看或@b4hand我很确定这正是他的问题。我认为他不懂C中的指针。你能理解吗我开始建议strcpy(),但是strcpy()如果使用不当会导致很多问题。使用strncpy()更安全因为这限制了复制的字符数。这个问题读起来像个学生。我认为最好是给学生指出最安全的方向,当他们熟悉C语言时,他们可以“扩展”。很公平:)真的很好奇。啊哈(鸡蛋在脸上)现在我看到文本被分配到一个数组,所以对只读内存等的担忧是无声的,这就是当我在充分考虑问题之前开始键入时所发生的情况,例如
char-whole[]=strdup(“请帮助我:)是错误的。将
整型
设为指针,或者删除
标准设置
自由设置
,然后直接分配字符串。
#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]);
}