创建从C语言的getline()读取的单词的字符**

时间:2018-09-18 00:33:01

标签: 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));

但是出现错误。最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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