2015-01-21 134 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