2015-10-15 44 views
0

初学者这绝对是气死我了,我该如何创建一个保存字符串,其中字符串的长度/数量是未知的阵列?我基本上是想创建一个字典,其中字符串动态数组/动态辞典这里</p> <p>

array[0] = "word" 

array[1] = "word2" 

array[2] = "word3" 

我想:

array** = malloc(INIT); where init was defined as 10 

memset(array, '\0', 10) 

然后,一个循环

array[i] = malloc(INIT) 

array[i] = string from another source (array2[i]) (array2 is a char*) 

下,但只是给错误/垃圾文本,我不知道如何分配字符串到阵列

我很难理解一般的指针/术语,我查看了所有类似的问题,并且无法理解任何答案。

+0

请发表[最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)。 –

+0

如果您可以发布_real_代码,分号和全部,而不是像_blabla_这样的一些不明显的占位符,这将会很有帮助。 –

回答

0

尝试这样做 -

int main(){ 
    int i; 
    char *arr[10]; 
    for(i=0;i<10;i++){ 
     char str[1000]; 
     scanf("%s", str); 
     arr[0] = (char*) malloc(strlen(str)); 
     strcpy(arr[0], str);  
    } 
    return 0; 
} 
0

您可以动态创建指针数组为字符串,并以这种方式保持灵活:

char** array = malloc(sizeof(char*)*n); // allocates an array of char* pointers 

如果以后需要扩展阵列中使用的realloc

char** newarray = realloc(array,sizeof(char*)*(n+1)); 
if (newarray != NULL) 
{ 
    array = newarray; 
    ... 
} 

您还必须记得为指针指向stor的位置分配空间荷兰国际集团的字符串

array[i] = strdup("blabla"); 

array[i] = malloc(strlen("blabla")+1); 
strcpy(array[i], "blabla"); 
+0

或者使用一个指向数组指针的指针:char *(* array)[n] = malloc(sizeof(* array));'' – Lundin

相关问题