c - 如何动态分配一个二维指针数组? (C)

标签 c arrays string pointers malloc

我有一项任务是制作字典。 它将包含 x 个单词及其定义(由用户输入)。 说明说字典应该是 char*** 类型(二维指针数组 = 数组 = 字符串),但我完全不知道如何动态分配数组的大小。它应该有 2 行,1 行用于单词,另外 1 行用于它们的定义,列数由字典中的单词数决定。在网上寻求帮助时,我想到了这个:

char** AllocateArray(int line, int column)
{
    char** pArray=(char**)malloc(line*sizeof(char*));
    int i;
    for(i=0;i<2;i++) 
        pArray[i]=(char*)malloc(column*sizeof(char));

    return pArray;
}

我应该对代码进行哪些更改才能使其与我的 char*** 一起使用? 使用 Visual Studio 2012

编辑:

我现在有一个问题:

void inputString(char* p1)
{
    char buffer[80];
    printf("\nEnter a word:");
    scanf("%s",buffer);
    p1=(char*)malloc(strlen(buffer)+1);
    if(p1!=NULL)
    {
        strcpy(p1,buffer);
        free(buffer);
    }
}

它在我输入一个词后立即崩溃。函数接收的 char* 是 dictionary[i][j]。 –

最佳答案

不要 free() 在堆栈上分配任何东西(即 buffer)。 此外,您的函数 inputString() 不会告诉它的客户端它分配了什么内存,因为 p1 是它的本地内存。

关于c - 如何动态分配一个二维指针数组? (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20598819/

相关文章:

c - 如何结束8051中的外部中断服务程序(ISR)

c - 打印数组列表大小崩溃

使用 malloc 和指针在 C 中创建 2 个随机矩阵

c - 如何正确制作 makefile,为什么这个 makefile 不正确

c++ - 在构建期间捕获所有编译器调用和命令行参数

c - C 的 Mandelbrot 递归函数

java - 如何限制数组的输入量? ( java )

c++ - 有没有办法将一系列零作为 int 输入?

java - Android部分字符串关键字匹配

c++ - 无法将 ‘std::string {aka std::basic_string<char>}’ 转换为 ‘char’ 作为返回