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

Split string with spaces to vector of strings in C

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

可以如下图做:

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 数组分解为标记。在这里,我使用相同的方法并使用 space 作为分隔符将 char 数组分解为标记,每个标记都被复制到向量中。 vec[i]。其中 vec 是指针数组,我为每个指针分配内存并将令牌复制到它。