#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int num1;
printf("정수를 입력하세요 : ");
scanf("%d", &num1);
printf("%d\n", num1);
int num2, num3;
printf("정수를 두 개 입력하세요 : ");
scanf("%d %d", &num2, &num3);
printf("%d %d\n", num2, num3);
float num4;
printf("실수를 입력하세요 : ");
scanf("%f", &num4);
printf("%f\n", num4);
double num5;
printf("실수를 입력하세요 : ");
scanf("%lf", &num5);
printf("%f\n", num5);
long double num6;
printf("실수를 입력하세요 : ");
scanf("%Lf", &num6);
printf("%Lf\n", num6);
char c2;
printf("문자를 입력하세요 : ");
scanf("%c", &c2); //첫 번째 문자만 입력됨
printf("%c\n", c2);
printf("문자를 입력하세요 : ");
char c3 = getchar(); //문자 하나를 입력받음
printf("%c\n", c3);
return 0;
}
위와 같이 소스코드를 작성했는데 문자를 입력받을 때 c2는 입력을 받지않고 갑자기 c3를 입력받는 것으로 넘어가는데 왜 그런건가요?... c2와 c3를 둘 다 입력받으려면 어떻게 해야 되나요?...
문자, 문자열을 입력 받을 때는 scanf를 한 번만 사용해야 합니다.
문자 두 개를 받고 싶다면
scanf("%c %c", &c1, &c2);
처럼 써야 합니다.
C 언어는 내부적으로 입출력 버퍼를 사용합니다. 이는 고급 주제입니다. 이에 대해서는 C 언어 코딩 도장을 차례대로 학습하면서 Unit 85.20을 읽게 되면 이해하게 될 것입니다. 물론, 지금 당장 읽어볼 수도 있지만, 이해하지 못하는 부분이 많을 수 있다는 점도 참고해주세요.