在 C 中创建从 getline() 读取的单词的 char**

标签 c arrays pointers char

我正在尝试创建一个动态字符**,因为它们是从 getline() 读入的

while ((lineLength = getline(&line, &n, stdin)) != -1) {
    if(lineLength > 0)
    {
        if(line[lineLength - 1] == '\n')
        {
            line[lineLength - 1] = '\0';
        }
    }
}

但我在使用 malloc() 创建元素并为其动态分配内存时遇到问题。我目前正在尝试

char** words = (char**)malloc(x*sizeof(char));

但出现错误。实现此目标的最佳方法是什么?

最佳答案

sizeof(char) 不同于 sizeof(char*)sizeof(char) 通常为 1,而指针的大小是实现定义的,但总是大于 1。你真的没有为你的指针分配足够的空间。因为你有一个指针的指针,我认为你真正想要的代码是

char** words = (char**)malloc(x*sizeof(char*));

关于在 C 中创建从 getline() 读取的单词的 char**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52377349/

相关文章:

c - C 中的堆损坏

c - 在 C 中创建函数指针结构时从未完成的类型错误

c++ - 在 C++ 中相互交换数组的部分

c - 在 C 中重新分配数组

c# - Array.Sort() 工作原理

c# - 递增数组中的值

c - 当使用更多迭代时,C 中的 asin() 函数返回 NaN

c - 这个 __usercall 包装器有什么问题?

c - 使用位域在标准 C 中将枚举字段强制为 8 位

c++ - 我无法制作 list<int> 数组的 unique_ptr