2012-07-16 64 views
-5

可能重複:
Split string with delimiters in C什麼是分裂C中的「」分隔的列表到一個數組的最佳方式

什麼是拆分「」分離的最佳方法列入C中的數組。我知道列表中有多少事物。

char list = "one,two,three,four"; 
int ENTServerAmount = 8; 
char **ENTServer; 
ENTServer = malloc(sizeof(char *) * ENTServerAmount); 
*** Code that splits "list" into "ENTServer" *** 

另外我不擅長分配,所以讓我知道如果我的分配聲明是錯誤的。

+5

如何在這個世界中獲得一個'char'的初始化方式? – 2012-07-16 18:33:27

回答

3

strtok()可能是您正在尋找的功能。

char list[] = "one,two,three,four"; 
int ENTServerAmount = 8; 
char **ENTServer; 

char *tmp = strtok (str, ","); 

int index = 0; 
while (pch != NULL) 
{ 
    ENTSever[index++] = tmp; 
    tmp = strtok (NULL, ","); 
} 
+2

-1 strtok是壞的,它不是可重入/ multithreadsafe,破壞字符串(字符串不能是const/literal),也忽略像「,,」這樣的空字段。與%n一起使用sscanf更好。 – user411313 2012-07-16 19:32:15

+5

@ user411313對於OP解釋的簡單例子,'strtok'是正確的路要走。我承認,斯特托克有失敗之處,但它很簡單易懂。因爲OP似乎對C來說是新手,所以現在不妨將他介紹給簡單的東西,以後再介紹更復雜的東西。 – 2012-07-16 19:47:33

相關問題