scanf를 통해 입력을 받을때
문자나 문자열을 입력받으면 오류가 발생할때가 있습니다..
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("첫번째 의 값은 ==> %d", a);
printf("두번째 의 값은 ==> %d", b);
}
이렇게 정수 두개만을 입력받을때는 문제가없습니다.
하지만 추가로 문자를 입력받으면 어떨까요?
int main() {
int a, b;
char c;
scanf("%d", &a);
scanf("%d", &b);
scanf("%c", &c); //추가
printf("첫번째 의 값은 ==> %d\n", a);
printf("두번째 의 값은 ==> %d\n", b);
printf("세번째 의 값은 ==> %c\n", c); //추가
}
놀랍게도 입력할 기회도 주지 않습니다.
문제는 함수를 통해 입력하고 엔터키를 칠때 이 엔터를 그냥 행위가 아닌 '\n'의 문자로 받아들이는 것에서 발생합니다.
버퍼에 남아있는 '\n'의 값을 초기화 해주기 위해선 getchar() 함수를 scanf 직전에 넣어주면됩니다
int main() {
int a, b;
char c;
scanf("%d", &a);
scanf("%d", &b);
getchar(); //엔터값 제거
scanf("%c", &c);
printf("첫번째 의 값은 ==> %d\n", a);
printf("두번째 의 값은 ==> %d\n", b);
printf("세번째 의 값은 ==> %c\n", c);
}
성공적으로 입력,출력 했습니다!
'C언어 > 매일 매일 안빼먹기' 카테고리의 다른 글
(C언어) int 범위 초과하는 숫자 계산(1) / 문자열 역순으로 바꾸기 (0) | 2022.11.14 |
---|---|
(C언어) 백준 10809: 알파벳 찾기 / 배열 비교 (0) | 2022.11.13 |
(C언어) 현재 시간 출력하기 (0) | 2022.11.12 |
(C언어) 배열 안에 여러 값들 비교하여 중복 값만 출력하기 (0) | 2022.11.10 |
(C언어) while 문에서 scanf로 무한히 입력 받고 조건 받아서 종료하기 (0) | 2022.11.10 |