我有一项任务是制作字典。 它将包含 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/