자료실/C언어

C언어 - scanf()

자료수집중 2020. 6. 11.
반응형

scanf()는 Stdio.h 헤더 파일 안에 있는 표준 라이브러리 함수 중 하나로 입력된 데이터를 지정된 형식으로 변환, 변수에 저장해주는 라이브러리 함수입니다.

 

 

대부분은 형식은 printf()와 차이가 없으므로 printf()를 참고하면 됩니다.

 

C언어 - printf()

printf는 Stdio.h 헤더 파일 안에 있는 표준 라이브러리 함수 중 하나입니다. f는 formatted를 뜻합니다. 출력하기 위해 여러 포맷을 지정할 수 있다는 의미입니다. printf("Hello World!"); 정말 많이 본 코드�

responding.tistory.com

 

 

먼저 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

댓글