Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用空格分割字符串到C中字符串的向量_C_String_C Strings - Fatal编程技术网

用空格分割字符串到C中字符串的向量

用空格分割字符串到C中字符串的向量,c,string,c-strings,C,String,C Strings,我有一个char*str指向一个字符串,上面写着“22 3 43 5”。我需要将其存储到一个向量(1-d数组)中,比如说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

我有一个
char*str
指向一个字符串,上面写着“22 3 43 5”。我需要将其存储到一个向量(1-d数组)中,比如说
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数组分解为标记,每个标记都被复制到向量中<代码>向量[i]。其中
vec
是指针数组,我为每个指针分配内存并将令牌复制到其中

我不知道在更大的字符串中分隔子字符串的空格数它将起作用。他问他不知道像
i<4
这样的空格的数目。只要去掉那个条件,他就可以接受。我可以声明一个足够大的向量。是吗?是的,你可以。这只是一个例子。如果你能给我一些关于代码使用
sscanf
,我会帮上大忙的。当它遇到空格时就停止读取。C语言没有向量。那就是C++。如果你指的是数组,那么就写数组。如果您指的是编译时大小未知的数组,请编写动态数组。