【发布时间】:2017-11-02 00:43:12
【问题描述】:
对于我的 C 编程课程,我们必须编写一个具有文件、char*** 数组和 int* 变量作为输入的 void 函数。我们应该遍历文件,确定行数并将其存储在 int* 变量中,然后将每一行复制到 char*** 数组中的相应行中。
我设法将文件中每一行的副本复制到一个 char** 数组中,现在我需要让 char*** 数组指向这个 char** 数组。不幸的是,我在这部分遇到了麻烦。
如果我尝试显示 char** 数组的行,一切正常。但是,如果我在将 char*** 数组链接到 char** 数组后尝试显示其行,则会显示第一行,然后出现分段错误。
这是最后一部分的代码,其中 array 是 char*** 变量,array2 是 char** 变量,num 是 int* 变量,其中包含文件中的行数:
array = (char***)malloc(sizeof(char**));
array = &array2;
for(i = 0; i < num; ++i) {
printf("%s\n", *array[i]);
}
我很确定我处理内存分配错误,但我可能是错的。不过,在此之前的所有代码似乎都可以正常工作。
提前致谢! :)
编辑:这可能很重要,也可能不重要,但是在主函数中,char***数组实际上是一个char**数组但是在使用函数时,它输入为&array,使其成为char*** .
【问题讨论】:
标签: c arrays string pointers malloc