패스트 캠퍼스 - 컴퓨터 공학 전공 필수 올인원 패키지 Onlne - 03.기본 입출력
기본적으로 취약한 함수이기 때문에 visual studio등에서 못쓰게 막고있고, 실제 프로그래밍을 할 때도 잘 쓰이지 않는다. 다만 공부목적으로 사용해보기로 한다.
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
int a;
scanf("%d",&a);
printf("입력한 숫자는 %d입니다.",a);
return 0;
}
scanf()을 이용할 때 &을 이용하는 이유 : &는 특정한 변수의 주소를 의미한다. 실제로 컴퓨터는 특정한 메모리 주소에 접근하여 데이터를 수정하므로 &를 이용하는 것이다.
그렇다면 메모리 주소에 얼마만큼의 크기로 데이터를 쓸 지 결정해야 한다. 이 때 사용하는 것이 형식 지정자.
%d : 정수(10진수)
%ld : 변수형 중 long형
%c : 문자(문자 하나)
%s : 문자열("apple" 같이 여러문자)
%f : 실수(10진수, 11.34와 같이 소수점 이하에 값이 있는경우)
%lf : 변수형 중 double형(8byte)
%u : unsigned int 와 같이 부호없는 정수(10진수)
%lu : unsigned long
%x, %X, %lx, %lX : 부호없는(unsigned) 16진수
%o, %lo : 부호없는 8진수
출처: https://itng.tistory.com/40 [IT & G]
double형 데이터는 입력받을 때는 %lf를 사용하고, 출력할 때는 %f를 사용한다. 그 이유는 입력을 받을 때는 특정 주소에 특정 크기만큼 입력을 수행한다. 다만 출력할 때는 주소가 아닌 값 자체를 이용해 출력하므로 구체적인 크기를 지정하지 않아도 된다.
% 자체를 문자로 출력하고 싶을 때는 '%%'를 입력하여 출력할 수 있다.
#include <stdio.h>
int main(int argc, const char * argv[]) {
double a;
scanf("%lf", &a);
printf("%.2f\n",a);
return 0;
}
Input = 3.666666
Output = 3.67
#include <stdio.h>
int main(int argc, const char * argv[]) {
int a,b;
scanf("%d %d", &a, &b);
printf("%d %d \n", b, a);
return 0;
}
int main(int argc, const char * argv[]) {
int a,b,c;
scanf("%1d %1d %1d", &a, &b, &c);
printf("%d %d %d\n", a,b,c);
return 0;
}
Input : 567
Output : 5 6 7 (따로 따로 출력됨)