Я пишу программу с использованием ассемблера и c ++ для сбора данных, введенных пользователем. В моем файле c ++ я читаю пользовательские номера с циклом cin
:
while (cin >> input)
{
myArray.push_back(input);
}
cin.clear();
Пользователю также говорят набрать CTRL-D
после завершения. В моем связанном файле Assembly я спрашиваю пользователя Are these numbers correct (y/n)?
Ранее, перед обновлением до Ubuntu 19.04, я сделал бы cin.clear()
, как отмечено выше, после прочтения входных данных, поэтому, когда я выполнил call getchar
обратно в свою сборкуфайл, я мог бы получить вход от пользователя. Однако после обновления Ubuntu моя программа выводит вопрос только о том, правильны ли числа и не читается в ’y/n‘
.
Я также пытался cin.ignore()
после цикла cin, но, похоже, это не такисправить мою проблему. Я могу только предположить, что call getchar
в моем файле Assembly читает какой-то символ новой строки, а не вводит пользовательский ввод, но, независимо от исправлений, которые я нашел в Интернете, кажется, ничто не принимает его.
Для дальнейшего разъясненияЯ компилирую / связываю с g ++ в моем терминале и собираю с помощью nasm. Я могу предоставить дополнительный код, если это необходимо. В сборке я просто делаю:
mov rax, 0
mov rdi, correctnumbersprompt ;This holds the string asking y/n
call printf
call getchar