【发布时间】:2020-05-24 14:45:00
【问题描述】:
我正在尝试编写一个程序来读取多个文件并将所有单词存储在一个字符串数组中。以下是部分代码:
这是我应该将单词放入的数组:
我还为这个数组动态分配内存并释放它,所以问题不在于那个。出于某种原因,在 while 循环之后,当我尝试打印出数组时,它是空的,就像没有写入任何内容一样。
如果您需要代码的任何其他部分,请告诉我,我很乐意发布。
【问题讨论】:
我正在尝试编写一个程序来读取多个文件并将所有单词存储在一个字符串数组中。以下是部分代码:
这是我应该将单词放入的数组:
我还为这个数组动态分配内存并释放它,所以问题不在于那个。出于某种原因,在 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);
当然你要记住freestrdup返回的所有指针。
【讨论】: