fgets는 버퍼에 입력하기 전에 '\ n'을 기다립니다. [중복]
Jan 02 2021
stdin에서 fgets를 사용하려고하는데 '\ n'을 입력 한 후에 만 화면에서 데이터를 수집하기 시작합니다. '\ n'이 멈출 때까지.
참고 : 내 코드에 scanf가 없습니다.
코드의 관련 부분 :
while (reconnect_flag)
{
printf("%s\n", RECONNECT_MENU);
char Input[2] = "";
fgets(Input, 2, stdin);
}
답변
JonathanLeffler Jan 03 2021 at 22:43
이후 fgets()의 데이터 라인을 판독하고자 의도 한대로, 제 개행 (또는 EOF 행)에 포함까지 그 행동한다.
또한 터미널 설정에 대해 멋진 작업을 수행하지 않는 한 터미널은 줄 바꿈이 나올 때까지 터미널에서 읽는 프로그램에 데이터 줄의 내용을 보내지 않습니다. 참조 비표준 입력 단자를 대 정규 는 POSIX (UNIX)의 관점에서 더 많은 정보. 따라서 한 문자를 읽으려고 fgets(Input, 2, stdin)
하면 개행 문자가 입력 될 때까지 입력이 수신되지 않습니다.
사용 가능한 즉시 입력하려면 플랫폼 별 API로 작업해야합니다. 즉, Windows에서 수행하는 작업은 Linux를 포함한 다양한 Unix 버전 인 POSIX 기반 시스템에서 수행하는 작업과 다릅니다. POSIX 기반 시스템에서도 curses
라이브러리를 사용 하거나 하위 수준 시스템 호출을 사용할 수 있으며이를 수행하는 여러 가지 방법이 있습니다.