用空格分割字符串到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++。如果你指的是数组,那么就写数组。如果您指的是编译时大小未知的数组,请编写动态数组。