遇到双指针的问题

问题描述 投票:0回答:1

我想写一个程序,读取多个文件,并将所有的单词存储在一个字符串数组中。以下是代码的一些部分。

这是我要把单词放进的数组。

我还动态地给这个数组分配了内存并释放了它,所以问题不在于此。不知为什么,在while循环之后,当我试图打印出这个数组时,它是空的,就像什么也没写进去一样。

如果你需要其他部分的代码,请告诉我,我很乐意把它贴出来。

c arrays string pointers
1个回答
0
投票

假设 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.

© www.soinside.com 2019 - 2024. All rights reserved.