我有char* str
指向一个字符串说“22 3 43 5”。我需要将它存储到一个向量(1-d数组)中说char *vec[]
,这样,vec[0]="22"
等等,如何做?
答案 0 :(得分:0)
可以如下所示完成:
char str[20] = "22 3 43 5";
char *vec[4];
int i=0;
char *p = strtok(str," ");
while(p!= NULL )
{
vec[i] = malloc(20); /* Free the memory once you are done using it */
strcpy(vec[i],p);
p = strtok(NULL," ");
i++;
}
如果你有
char* str = "22 3 43 5";
然后str
是一个字符串文字,它是只读的,strtok()
会更改传递的字符串,因此您可能会看到崩溃。
编辑:
strotk()
函数有助于根据分隔符将char数组分解为标记。在这里,我使用相同的方法,并使用空格作为分隔符将char数组分解为标记,并将每个标记复制到向量中。 vec[i]
。其中vec
是指针数组,对于每个指针,我分配内存并将令牌复制到它。