我试图创建一个动态字符**的单词,因为它们是从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 - 创建从C语言的getline()读取的单词的字符**,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52377349/

10-17 01:36