首页 > 解决方案 > 双指针有问题

问题描述

我正在尝试编写一个程序来读取多个文件并将所有单词存储在一个字符串数组中。以下是部分代码:

这是我应该将单词放入的数组:

我还为这个数组动态分配内存并释放它,所以问题不在于那个。出于某种原因,在 while 循环之后,当我尝试打印出数组时,它是空的,就像没有写入任何内容一样。

如果您需要代码的任何其他部分,请告诉我,我很乐意发布。

标签: carraysstringpointers

解决方案


假设这word_collection.all_words对您正在使用的所有索引都有效,那么赋值

word_collection.all_words[wc_pos++] = word;

将使所有元素word_collection.all_words指向完全相同的位置:单个word数组的第一个元素。

这是一个问题,还有另一个可能的问题:如果word不是全局变量,那么一旦定义的函数word返回,生命周期word就会结束,使所有这些指针无效。

要解决这两个问题,您还需要为每个元素分配内存,并从word. 这可以通过常用的strdup功能来完成:

word_collection.all_words[wc_pos++] = strdup(word);

当然,您必须记住free所有由strdup.


推荐阅读