Study/C
C 언어 - 03. 기본 입출력
WinCNT_SSS
2021. 7. 31. 23:38
scanf()로 입력해보기
#define _CRT_SECURE_NO_WARNINGS //취약 함수인 scanf를 쓰기 위한 명시적인 정의(VS 한정)
#include <stdio.h>
int main(void)
{
int a;
printf("숫자를 입력해 주세요.\n");
//scanf는 가장 기초적인 입력 함수이며 취약한 함수
//VS에서 바로 사용할 수 없게 되어 있음
scanf("%d", &a);
printf("입력한 숫자는 %d입니다.\n", a);
system("pause");
return 0;
}
scanf()에서 &를 사용하는 이유
- &(Ampersand, 앰퍼샌드)는 특정 변수의 주소를 의미한다.
- 실제로 컴퓨터는 특정한 메모리 주소에 접근하여 데이터를 수정하므로 &를 사용하는 것
- 그렇다면 메모리 주소에 얼마만큼의 크기로 데이터를 쓸 지 결정해야 하는데
그 때 사용하는 것이 형식 지정자이다.
- 그렇다면 메모리 주소에 얼마만큼의 크기로 데이터를 쓸 지 결정해야 하는데
double형 데이터는 왜 입출력 시의 형식 지정자가 다를까?
입력을 받을 때는 특정 주소에 특정 크기만큼 입력을 수행해야 하지만(%lf),
출력을 할 때에는 주소가 아닌 값 자체를 이용해 출력하므로 구체적인 크기 지정이 필요 없다(%f).
형식 지정자의 응용
형식 지정자의 앞에 숫자를 추가함으로써 입출력 시의 자릿수를 지정할 수 있다.
예) scanf("%1d%1d%1d", &a, &b, &c);
⇒ 입력 받은 정수를 한 자리씩 끊어서 변수 a, b, c에 넣는 처리