将带空格的字符串拆分为 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
是指针数组,我为每个指针分配内存并将令牌复制到它。
我有一个 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
是指针数组,我为每个指针分配内存并将令牌复制到它。