Функция SCANF записывает только первую нажатую букву

#keyboard #scanf #osdev

Вопрос:

Я работаю над простой ОС на C и пытаюсь реализовать клавиатуру без использования прерываний (да, я ленив -), однако символ*, возвращаемый функцией, содержит только одну букву (первая нажата) Он использует переменную MAX_16, которая просто равна 2^16.Я создаю свой собственный STDLIB и не имею доступа к большинству функций STDLIB.

 char* scanf() {
    char* ret;
    for(int i = 0; i <= max_16; i  ) {
        ret[i] = getkey();
        if(ret[i] == 'n') { return ret; }
    }
}
 

Комментарии:

1. Он собирает нажатия клавиш с помощью inb(0x60);

Ответ №1:

ret никогда не инициализируется, поэтому внутри цикла вы постоянно записываете данные в мусорную память. Вероятно, возникает ошибка, из-за которой приложение зависает, в результате чего больше не обрабатывается ввод.

Комментарии:

1. Так просто добавить char* ret = new char(); ?