我想写一个程序,读取多个文件,并将所有的单词存储在一个字符串数组中。以下是代码的一些部分。
这是我要把单词放进的数组。
我还动态地给这个数组分配了内存并释放了它,所以问题不在于此。不知为什么,在while循环之后,当我试图打印出这个数组时,它是空的,就像什么也没写进去一样。
如果你需要其他部分的代码,请告诉我,我很乐意把它贴出来。
假设 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
.