将空格分割为C中字符串向量的空格

时间:2015-01-21 10:55:50

标签: c string c-strings

我有char* str指向一个字符串说“22 3 43 5”。我需要将它存储到一个向量(1-d数组)中说char *vec[],这样,vec[0]="22"等等,如何做?

1 个答案:

答案 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是指针数组,对于每个指针,我分配内存并将令牌复制到它。