해결된 질문
24.07.10 22:07 작성
·
122
·
수정됨
1
안녕하세요! 강의 잘 보고 있습니다. 몇 가지 질문이 있습니다!
_getch() 함수를 설명해주실 때, 사용자가 주변기기(ex. 키보드)에 입력한 것이 무엇인지 보이지 않는다고 했는데, 이를 활용한 것이 흔히 콘솔(터미널)에서 어떤 계정과 비밀번호 입력할 때 비밀번호 입력해도 콘솔에 표시되지 않는 것들을 구현할 때 사용하려나요?(윈도우에선 putty 같은 것에서..) 개인적으로 궁금하네요 ㅎㅎ
가끔 퍼블릭 클라우드의 VM으로 인터넷을 통해 로컬에서 원격 접속을 하게 된 뒤에 VM의 콘솔에서 키보드를 입력하면 가끔 끊기면서 입력되는 경우도 있던데.. 이는 네트워크 대역폭이나 속도 관련 문제일 가능성이 높겠죠?
제가 현재 MacOS라서 버추얼박스에서 window 및 visual studio 설치 후 사용하고 있는데요! 거기에서 아래의 예제 코드를 실행하고 키보드 입력을 'z' 로 했는데 콘술 출력에 'za'가 아니라 'z?' 가 나오는데요. 물음표가 대체 왜나올까요..? 예상 가시는 원인이 있으시려나요..
3번에서 이야기한 아래 예제 코드에서 char ch = 0; 부분 설명하시면서 0이라는 숫자값이 정수인 것 같은데 앞에 char 키워드로 지정해도 에러가 나지 않는 부분은 char도 어쨌건 컴퓨터한테는 정수 숫자형태로 인지되고, 정의한 0이라는 값이 char 자료형의 숫자 범위 내에 있기 때문인 걸로 이해했는데.. 이게 맞나요?
3번 질문에 대한 예제코드는 다음과 같습니다.
#include <stdio.h>
#include <conio.h>
int main(void)
{
char ch = 0;
ch = getchar();
putchar(ch);
putchar('z');
return 0;
}
답변 미리 감사합니다! :)
답변 3
1
1
안녕하세요, 인프런 AI 인턴입니다.
네, 맞습니다. _getch() 함수는 키 입력을 할 때 문자가 화면에 보이지 않도록 하기 때문에, 비밀번호를 입력 받을 때 매우 유용하게 사용할 수 있습니다. 사용자의 입력을 화면에 바로 표시하지 않아야 할 때 사용됩니다.
네트워크의 지연(delay)이나 대역폭(bandwidth) 문제는 원격 접속에서 입력이 지연되거나 끊기는 주된 원인 중 하나입니다. 특히 공공 인터넷을 넘나드는 경우 더욱 이러한 문제가 발생하기 쉽습니다.
MacOS에서 VirtualBox를 사용하여 Windows와 Visual Studio를 실행하는 환경에서 한글 입력과 관레된 문제로 보입니다. MacOS와 Windows 간의 키보드 입력 방식의 차이, 특히 인코딩 차이로 인한 문제일 수 있습니다. Windows에서 기대하는 캐릭터 인코딩과 MacOS에서 전달되는 인코딩이 달라 발생하는 문제 같습니다. 콘솔의 언어 설정을 확인하거나, 간단히 ASCII 범위 내의 문자로 테스트해 보는 것을 권장합니다.
예, 맞습니다. C 언어에서는 char
타입을 실제로는 작은 정수형으로 처리합니다. 이것은 char
타입이 메모리에 한 바이트(byte)를 차지하고, 이 한 바이트 내에서 표현할 수 있는 정수 값을 사용해서 문자를 인코딩합니다. 따라서 0이라는 정수 값을 char
타입 변수에 할당하는 것은, 해당 변수에 ASCII 코드 0에 해당하는 문자(널 문자)를 저장하는 것과 동일하며, 이는 C 언어의 타입 시스템 내에서 완벽하게 유효한 동작입니다.
도움이 되셨길 바라며, 추가적인 질문이 있으시다면 언제든지 질문해 주세요!
0