(포스팅 2022.10.11)
아래와 같이 Visual Studio에서 c언어로 작업중이었는데, scanf_s() 직후의 fgets() 입력이 무시되는 경우가 발생하였습니다.
이러한 문제는, scanf_s()에서 [엔터키]를 누를 때 "\r\n"이 입력되어서 발생합니다.
아래와 같이 getchar()으로 입력버퍼의 내용을 받아 보면, code 10 = '\n' 이 들어있었음을 알 수 있습니다.
입력 버퍼에 남은 '\n'을 제거하는 것이 해결책입니다. getchar()를 사용하는 것이 간단합니다.
#include <stdio.h>
#define MAX_NAME 20
int main()
{
int id;
char name[MAX_NAME] = { 0, };
int price;
printf("ID : ");
scanf_s("%d", &id);
getchar(); // 입력 버퍼에 남은 문자 하나를 제거
// fflush(stdin); // 해당 명령은 output 버퍼만을 비우므로 문제 해결 안됨
printf("이름:");
fgets(name, MAX_NAME - 1, stdin);
printf("단가:");
scanf_s("%d", &price);
}
실행 결과는 다음과 같습니다.
포스팅은 여기까지입니다. 궁금하신 점 댓글 주세요.
언제나 감사드립니다.
(C언어) 왜 전역변수만 자동으로 초기화되는가 (0) | 2022.10.12 |
---|---|
(C언어) 문자열 배열에 문자열 대입 불가 (0) | 2022.10.12 |
(C언어) ARRAY_SIZE()로 배열크기 측정 시 유의점 (0) | 2022.10.07 |
NULL을 사용하는 이유 (2) | 2022.10.05 |
C와 다른 언어의 차이점 (0) | 2022.04.12 |
댓글 영역