C 将字符指针的值赋给字符数组
我正在使用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
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]);
}