动态数组字符串/动态字典

时间:2015-10-15 05:27:44

标签: c arrays pointers dictionary

初学者

这绝对令我感到愤怒,我如何创建一个包含字符串长度/数量未知的字符串的数组?我基本上想要创建一个字典

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*)

但是这只会给出错误/垃圾文本,我不知道如何将字符串分配给数组

我很难理解指针/术语,我已经查看了所有相似的问题,无法理解任何答案。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
  ...
}

您还必须记住为指针指向存储字符串的位置分配空间

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

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