이번 편의 목표: printf 서식으로 값을 출력하고, scanf로 정수를 변수에 넣습니다.
서식 문자열은 뒤에 오는 인자를 어떤 모양으로 보일지 정합니다. %d는 int, %.1f는 소수 한 자리 double, %c는 char, %zu는 sizeof 결과, %s는 문자열입니다. 서식과 인자의 타입이 어긋나면 출력은 신뢰할 수 없습니다.
입력은 변수 자체가 아니라 그 변수의 주소로 받습니다. 주소 연산자는 &입니다.
#include <stdio.h>
int main(void) {
int late_days = 0;
printf("연체 일수: ");
if (scanf("%d", &late_days) != 1) {
printf("숫자를 입력하세요.\n");
return 1;
}
printf("연체료는 %d원입니다.\n", late_days * 100);
return 0;
}scanf는 변환에 성공한 개수를 반환합니다. 정수가 아니면 1이 아니므로 계산으로 내려가지 않습니다. return 1은 입력이 잘못되어 끝났다는 상태입니다.
3을 입력하면 연체료는 300원입니다. 가 출력됩니다. &를 빠뜨리면 컴파일러가 경고합니다. 그 경고를 고치지 않고 실행하지 않습니다.
직접 해 보기
가격을 하나 입력받아 그 값에 2를 곱한 결과를 출력하세요. 숫자가 아니면 안내 문장만 출력하고 1로 종료합니다.
해설
scanf("%d", &price)의 반환값이 1일 때만 price * 2를 출력합니다. 주소 연산자는 price 앞에 붙입니다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.