gpt4 book ai didi

c - 将字符串数组传入函数+此数组的动态分配不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:23 25 4
gpt4 key购买 nike

<分区>

我是 c 编程的新手,想为自己编写一个辅助函数来执行以下操作

  • 接收一个字符**作为第一个输入参数
  • 接收 const char* 作为第二个输入参数(文件路径)
  • 读入文件并用读入的行填充 char**
  • 返回读入的行数,以便调用函数“知道”传入数组的大小

想法是有一个辅助函数来完成读取文件的工作,而不需要一直重写逻辑。

我不断收到段错误,因此将其减少到以下测试用例(仍然无法正常工作)进行调试:

测试函数:

int test_read_in_file() {
char **arrayLinesOfFile;
int numberOfRowsReadIn = read_in_file("test_file.txt",
arrayLinesOfFile);
printf("%s\n", arrayLinesOfFile[0]); // gives segmentation fault
}

函数(现在简化为一个简单的测试):

int read_in_file(const char* pathToFile, char** linesOfFile) {
int numberOfRows = 5;
linesOfFile = (char**) malloc(numberOfRows * sizeof(char*));
linesOfFile[0] = malloc(10 * sizeof(char)); // just for testing
strcpy(linesOfFile[0], "Andreas"); // just for testing
printf("%s\n",linesOfFile[0]); // this works fine, output "Andreas"
return numberOfRows;
}

运行这个测试用例时,函数中的printf语句正常,测试运行器中的printf给出了一个段错误。

我不明白为什么会这样。在我的理解中,linesOfFile 将通过引用传递,然后我为第一个元素分配内存,然后分配足够的元素以在第一个元素中保存“Andreas”。

任何帮助将不胜感激。

谢谢安德烈亚斯

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com