1
이것은 예제 코드입니다. 프로그램에 이러한 함수를 사용하고 있지만 scanf가 제대로 작동하지 않습니다. 입력을 표시하지 않고 Enter 키를 두 번 누른 후에 만 입력을 허용합니다. 도움을Win32 ConsoleInput 함수를 사용할 때 scanf가 작동하지 않는 이유는 무엇입니까?
#include <stdio.h>
#include <windows.h>
char c[25];
void KeyEventProc(KEY_EVENT_RECORD);
void KeyEventProc(KEY_EVENT_RECORD ker){
if(ker.bKeyDown) ; // do stuff
}
main(){
HANDLE hStdin;
DWORD cNumRead, fdwMode, fdwSaveOldMode, i;
INPUT_RECORD irInBuf[128];
hStdin = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hStdin, &fdwSaveOldMode);
fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
SetConsoleMode(hStdin, fdwMode);
ReadConsoleInput(hStdin, irInBuf, 128, &cNumRead);
for (i = 0; i < cNumRead; i++){
switch(irInBuf[i].EventType){
case KEY_EVENT:
KeyEventProc(irInBuf[i].Event.KeyEvent);
// do stuff
break;
default:
// do stuff
break;
}
}
scanf("%s", &c);
printf("%s", c);
}
감사 :
이 코드입니다!