scanf()는 Stdio.h 헤더 파일 안에 있는 표준 라이브러리 함수 중 하나로 입력된 데이터를 지정된 형식으로 변환, 변수에 저장해주는 라이브러리 함수입니다.
대부분은 형식은 printf()와 차이가 없으므로 printf()를 참고하면 됩니다.
먼저 scanf()를 사용하기 전에 자료형들의 정확한 크기를 알고 가는 게 좋습니다.
sizeof()는 변수, 상수, 자료형들의 크기를 바이트로 표시해줍니다.
scanf()는 scanf("형식지정",&변수);로 구성되어있으며 &는 변수의 주소를 알려주는 의미입니다.
이제 scanf()를 예제로 살펴보겠습니다.
int a;
printf("int 입력: ");
scanf("%d", &a);
printf("입력된 수 %d\n", a);
long b;
printf("long 입력: ");
scanf("%d", &b);
printf("입력된 수 %d\n", b);
long long c;
printf("long long 입력: ");
scanf("%lld", &c);
printf("입력된 수 %lld\n", c);
float d;
printf("float 입력: ");
scanf("%f", &d);
printf("입력된 수 %f\n", d);
double e;
printf("double 입력: ");
scanf("%lf", &e);
printf("입력된 수 %lf\n", e);
long double f;
printf("long double 입력: ");
scanf("%Lf", &f);
printf("입력된 수 %Lf\n ", f);
char g;
printf("char 입력: ");
scanf(" %c", &g);
printf("입력된 문자 %c\n", g);
char h[20];
printf("char[] 입력: ");
scanf("%s", &h);
printf("입력된 문자 %s\n", h);
여기서 중요하게 알아야 할 점은
double e;
printf("double 입력: ");
scanf("%lf", &e);
printf("입력된 수 %lf\n", e);
double은 입력은 %lf로 받습니다. 하지만 출력은%lf와 %f 둘 다 됩니다.
단 C99(c언어 표준) 이후부터 %lf사용 가능합니다.
다음으로는 %c의 주의할 점 입니다.
char g;
printf("char 입력: ");
scanf(" %c", &g);
printf("입력된 문자 %c\n", g);
scanf(" %c", &g);에 %c앞에 공백이 하나 들어갑니다.
이유는 앞에서 받은scanf에서 데이터를 받고 엔터를 누르면서 버퍼에 \n(엔터)가 남아 다음 scanf가
\n(엔터)를 받고 그냥 넘어가버리는 경우가 발생합니다. 그래서 공백을 넣게 되면 \n을 인식하지 않습니다.
다음은 %s는 문자열입니다.
char h[20];
printf("char[] 입력: ");
scanf("%s", &h);
printf("입력된 문자 %s\n", h);
문자열은 char의 배열입니다. 그래서 char을 배열로 선언해서 입력받으면 됩니다.
scanf()는 여러 개도 입력을 한 번에 받을 수 있습니다.
int num1;
float num2;
scanf("%d%f", &num1, &num2);
printf("입력된 수 %d %f\n", num1, num2);
입력받는 형식만 정확하다면
한 개 입력받고 엔터를 치는 게 아니라 스페이스(공백)또는 엔터를 누르고 다음 입력을 하면 두 개의 입력을 받을 수 있습니다.
단 문자를 연속으로 받는 경우 스페이스(공백)또는 엔터를 문자로 처리하기 때문에 연속으로 두자를 써야 합니다.
그래서
char char1, char2;
scanf(" %c %c", &char1, &char2);
printf("입력된 문자 %c %c\n", char1, char2);
처음과 중간에 공백을 넣어줍니다. 그러면 기존과 똑같이 사용할 수 있습니다.
'공부 자료실 > C언어' 카테고리의 다른 글
C언어 - 조건문 if(), swith() (0) | 2020.06.15 |
---|---|
C언어 - 연산자 (0) | 2020.06.12 |
C언어 - printf() (0) | 2020.06.10 |
C언어 - 기본 구조의 이해 (0) | 2020.06.09 |
C언어 - 프로젝트 생성 (0) | 2020.06.08 |
댓글