gpt4 book ai didi

c - 我如何在 C 中通过 malloc 分配一个指针数组和一个二维数组?

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

我正在编写一个程序,该程序将文本文件作为输入,对其进行索引并在文件和屏幕中打印输出(索引)。

输入文件可能很大。但我们知道文本文件中使用的单词的最大种类是 200。我们不知道每个单词的行数和字符数是多少。所以我应该为他们保留大量。我取了最大行1000,每个单词最大字符数100。

我正在使用 Turbo C 编程并且(我被迫使用它)。编译器仅分配 64kb 内存(包括编译器的大小),因此我必须使用 MALLOC。

我的程序应该在这个算法中工作:它使用 fgets 逐行读取输入文件。然后在当前行中,它使用 strtok 逐字读取。到目前为止,我在第 y 行中有第 x 个单词。我想把单词放在一个指针数组中。所以我需要一个 char * word[200]。我想显示多少次哪个词哪一行重复了。所以我需要一个 int index [200][1000]。如果在第 y 行,第 x 个单词存在,我将执行 index[x][y]++

所以现在我需要为这些 char * word[200]int index[200][1000] 分配 MALLOC 内存。谁能帮忙?我尝试了这些问题的所有答案,但都没有帮助。

最佳答案

你没有正确的 malloc。您的 malloc(100) 仅分配 100 个字节。你需要

char * words[i] = malloc(sizeof(char *) * 100);

这分配了 800 个字节(100 个元素,每个 8 字节(指针大小))。

同样,在第二个malloc中,你想要两个整数,你需要

int index[i][j] = malloc(sizeof(int *) * 2);

你不应该强制转换为指针;它返回一个 void 指针,仅通过赋值将其隐式转换为您需要的任何类型的指针。

http://www.cplusplus.com/reference/cstdlib/malloc/

此外:

此外,您正试图将 2 个字节填充到一个整数指针中或将 4 个字节(100-96 = 4;96 是 8 * 12)填充到一个字符指针中。我不知道那会做什么。您可以希望的最好结果是您将在某处丢失内存并有效地拥有 12 个字符指针和 2 个内存泄漏。

关于c - 我如何在 C 中通过 malloc 分配一个指针数组和一个二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335116/

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