2015-01-21 100 views
-1

我有一个char* str它指向一个字符串说“22 3 43 5”。我需要将它存储到一个向量(1-d数组)中,例如char *vec[],这样,
vec[0]="22"等等
它是如何完成的?分割字符串与空间向量的字符串在C

+0

使用'sscanf'。它在遇到空格时停止阅读。 – saadtaame 2015-01-21 11:44:26

+2

语言C没有载体。那将是C++。如果你的意思是数组,那么写数组。如果您的意思是在编译时未知其大小的数组,请写入动态数组。 – pts 2015-01-21 13:01:51

回答

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数组分解为令牌,并将每个令牌复制到向量中。 vec[i]。其中vec是指针数组,对于每个指针我分配内存并将令牌复制到它。

+0

我不知道在更大的字符串中分隔的子字符串的数量 – 2015-01-21 11:19:28

+0

@Wamiq这应该工作 – Gopi 2015-01-21 11:24:30

+0

它会工作。他问他不知道“i <4”这样的空格。只要消除他可能接受的条件即可。 – 2015-01-21 11:32:19