Информация об изменениях

Сообщение Не работает scanf в консольном окне от 18.10.2022 13:05

Изменено 19.10.2022 6:38 RussianFellow

Не работает scanf в консольном окне
В моём диалоговом интерфейсном приложении я открыл консольное окно (средствами WinAPI, так как сделать это средствами Qt я не знаю):

::AllocConsole();
freopen("CONIN$","rt",stdin);
freopen("CONIN$","wt",stdout);
freopen("CONIN$","wt",stderr);
HANDLE  hStdin, hStdout, hStderr;
hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
hStderr = GetStdHandle(STD_ERROR_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO  csbiInfo;
GetConsoleScreeenBufferInfo(hStdout,&csbiInfo);
COORD  dwSize = csbiInfo.dwSize;
dwSize.Y = 9999;
SetConsoleScreenBufferSize(hStdin,dwSize);
SetConsoleScreenBufferSize(hStdout,dwSize);
SetConsoleScreenBufferSize(hStderr,dwSize);


В этом консольном окне осуществляется ввод-вывод текстовой информации.
И вот у меня код для ввода-вывода текстовой информации:

char  answer[2], alphaisequal[80];

sprintf(alphaisequal,"Коэффициент сходимости alpha равен %.5f . Хотите изменить (y/n)?\n\n",alphacoef);
printf("%s",alphaisequal);
printf(" ");
scanf("%s",answer);


Вывод текста работает, но вот почему-то не работает функция scanf — программа просто переходит дальше, не ожидая ввода этого значения.
Как исправить эту ошибку?


18.10.22 17:29: Вопрос по WinAPI, не имеет отношения к Qt — SaZ
Не работает scanf в консольном окне
Я работаю в Qt Creator 4.12.2 .
В моём диалоговом интерфейсном приложении я открыл консольное окно (средствами WinAPI, так как сделать это средствами Qt я не знаю):

::AllocConsole();
freopen("CONIN$","rt",stdin);
freopen("CONIN$","wt",stdout);
freopen("CONIN$","wt",stderr);
HANDLE  hStdin, hStdout, hStderr;
hStdin = GetStdHandle(STD_INPUT_HANDLE);
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
hStderr = GetStdHandle(STD_ERROR_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO  csbiInfo;
GetConsoleScreeenBufferInfo(hStdout,&csbiInfo);
COORD  dwSize = csbiInfo.dwSize;
dwSize.Y = 9999;
SetConsoleScreenBufferSize(hStdin,dwSize);
SetConsoleScreenBufferSize(hStdout,dwSize);
SetConsoleScreenBufferSize(hStderr,dwSize);


В этом консольном окне осуществляется ввод-вывод текстовой информации.
И вот у меня код для ввода-вывода текстовой информации:

char  answer[2], alphaisequal[80];

sprintf(alphaisequal,"Коэффициент сходимости alpha равен %.5f . Хотите изменить (y/n)?\n\n",alphacoef);
printf("%s",alphaisequal);
printf(" ");
scanf("%s",answer);


Вывод текста работает, но вот почему-то не работает функция scanf — программа просто переходит дальше, не ожидая ввода этого значения.
Как исправить эту ошибку?