Динамически распределять введенную пользователем строку

Я пытаюсь написать функцию, которая делает следующие вещи:

Начать цикл ввода, печать'> ' каждая итерация.Возьмите все, что пользователь вводит (неизвестная длина), и считайте его в массив символов, динамически распределяя размер массива при необходимости. Введенная пользователем строка заканчивается символом новой строки.Добавить нулевой байт,'\0', до конца символьного массива.Цикл завершается, когда пользователь вводит пустую строку:'\n'

Вот что я сейчас написал:

void input_loop(){
    char *str = NULL;

    printf("> ");

    while(printf("> ") && scanf("%a[^\n]%*c",&input) == 1){

        /*Add null byte to the end of str*/

        /*Do stuff to input, including traversing until the null byte is reached*/

        free(str);
        str = NULL;
    }
    free(str);
    str = NULL;
}

Теперь я не слишком уверен, как добавить нулевой байт в конец строки. Я думал что-то вроде этого:

last_index = strlen(str);
str[last_index] = '\0';

Но я не уверен, что это сработает. Я не могу проверить, сработает ли это, потому что я сталкиваюсь с этой ошибкой, когда пытаюсь скомпилировать свой код:

warning: ISO C does not support the 'a' scanf flag [-Wformat=]

Итак, что я могу сделать, чтобы мой код работал?

РЕДАКТИРОВАТЬ: изменениеscanf("%a[^\n]%*c",&input) == 1 вscanf("%as[^\n]%*c",&input) == 1 дает мне ту же ошибку.

Ответы на вопрос(0)

Ваш ответ на вопрос