2012-10-18 2 views
2

사용자가 DLL을 입력해야 암호를 입력 할 수 있으며 화면에 표시되지 않습니다. 그래서 나는이 같은 반향 없음으로 문자를 얻기 위해Windows 서버 2012에서 _getch()가 작동하지 않습니다.

 //get character with no echo 
     ch = _getch(); 

_getch()를 사용하여 코드 사용을 마이크로 소프트 VS2005를 컴파일합니다.
Windows 서버 2003/2008에서 작동하지만 새 Windows 서버 2012에서는 문자를 화면에 에코합니다.
내 문제는 왜 _getch() Windows 서버 2012에만 에코 문자입니까? 그것을 고치는 방법?

+0

'ReadConsoleInput'? – Mehrdad

+0

마침내 나는'_getch()'가 잘 작동한다는 것을 발견했다. 문제는'fgetpos'와'fsetpos'를 사용하여'stdin'에 어떤 스트림이 있는지 확인하는 것입니다. 나는 그들을 fseek (stdin, 0, SEEK_END)로 바꾼다. 2012 년에 잘 작동한다. – jmuok

+0

스트림이'stdin'인지 확인하기 위해'_isatty'를 사용하지 않아야합니까? – Mehrdad

답변

0

getch() 대신 cin.get()을 사용하십시오.

+0

질문에 c 및 C++ 태그가 붙습니다. 'cin.get()'은 C에서 사용할 수 없습니다. –

+0

그러나 C++! 안 그래? –

+0

예,하지만 (a) OP가 질문을 c와 C++로 모두 태그 한 경우 그는 아마도 두 언어 모두에서 작동 할 솔루션을 찾고있을 것입니다. (b)'cin.get()'은 에코를 해제하지 않습니다. –

관련 문제