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