c - 双指针有问题
问题描述
我正在尝试编写一个程序来读取多个文件并将所有单词存储在一个字符串数组中。以下是部分代码:
这是我应该将单词放入的数组:
我还为这个数组动态分配内存并释放它,所以问题不在于那个。出于某种原因,在 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
.
推荐阅读
- python - 我想按日期列 Django 求平均值?
- reactjs - 你可能需要一个合适的加载器——React native
- laravel - Laravel 多对多关系使用数据透视表列出订单
- python - 基于包含两列 {image_id, label} 的 CSV 文件命名图像
- php - 如何在 Flutter 中反序列化 php 中的序列化数据?
- vba - 按钮与模块不同?
- php - TCPDF 强制内容在单页中显示或根据内容扩展页面高度
- javascript - 当元素获得焦点时停止输入文本
- node.js - 为什么 Redis 进入异步功能太慢了?
- macos - ld:找不到 -lSystem macOS Big Sur 11.1 的库