首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态字符串数组/动态字典

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

Stack Overflow用户
提问于 2015-10-15 13:27:44
回答 2查看 125关注 0票数 0

初学者在这里

这绝对激怒了我,我如何创建一个包含字符串的数组,而字符串的长度/数量是未知的?我本质上是想创建一个字典,其中

代码语言:javascript
复制
array[0] = "word"

array[1] = "word2"

array[2] = "word3"

诸若此类

我试过了:

代码语言:javascript
复制
array** = malloc(INIT); where init was defined as 10

memset(array, '\0', 10)

然后,在一个循环下

代码语言:javascript
复制
array[i] = malloc(INIT)

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

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

一般来说,我很难理解指针/行话,我看过所有类似的问题,但没有一个答案。

EN

回答 2

Stack Overflow用户

发布于 2015-10-15 13:32:54

试着这样做-

代码语言:javascript
复制
    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
EN

Stack Overflow用户

发布于 2015-10-15 13:33:09

您可以动态创建一个指向字符串的指针数组,并以这种方式保持其灵活性:

代码语言:javascript
复制
char** array = malloc(sizeof(char*)*n); // allocates an array of char* pointers

如果以后需要扩展数组,请使用realloc

代码语言:javascript
复制
char** newarray = realloc(array,sizeof(char*)*(n+1));
if (newarray != NULL)
{
  array = newarray;
  ...
}

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

代码语言:javascript
复制
array[i] = strdup("blabla");

代码语言:javascript
复制
array[i] = malloc(strlen("blabla")+1);
strcpy(array[i], "blabla" );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33140530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档