Создание символа ** слов, прочитанных из getline () в C - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь создать динамический символ ** слов при их чтении из 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 голосов
/ 18 сентября 2018

sizeof(char) отличается от sizeof(char*).sizeof(char) обычно равно 1, в то время как размер указателя определяется реализацией, но всегда больше этого значения.Вы действительно не выделяете достаточно места для вашего указателя.Поскольку у вас есть указатель указателей, я думаю, что код, который вам действительно нужен, это

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