컴퓨터 프로그래밍/C

C언어 scanf()에 대하여

나노콛 2019. 7. 23. 11:26

scanf() 함수는 입력하는 함수입니다.

이 함수의 리턴 타입이 있을까 하는 이야기입니다.

일반적으로 변수에 값을 담기 위해 사용하는 함수인데요
이 함수는 리턴 타입이 int입니다.

int _cdecl scanf(const char *const _Format....)

반환형이 int라는 것이 나옵니다.
그러면 무엇을 반환해 줄 수 있을까요

 

#include<stdio.h>
int main()
{
	int a, b;
	int c;
	c = scanf("%d %d", &a, &b);

	printf("%d\n",c);
	return 0;
}

c에 scanf 리턴 값을 담아 보겠습니다.

 

case 1) 1,2입력

제대로 자료형에 맞게 입력하면 입력 성공 한 만큼 숫자가 나옵니다.

case 2) 1, x 입력

뒤에 따라오는 변수에 담지 못한 경우(입력 실패)
성공한 하나만 변수에 저장되며(a)
실패한 변수(b)는 변수에 담기지 않습니다

 

case 3) x, 1 입력

처음 값이 입력 실패를 하면
뒤의 값도 실패를 하게 되며
모두 다 담기지 않습니다.

입력 버퍼에 담긴 다른 자료형으로 인해 접근을 하지 못하는 경우

 

case 4) a, b 입력

둘 다 입력 실패가 떠서 scanf 리턴 값이 0이 출력되었습니다.


어디서 활용을 할까?

입력이 제대로 되지 않았다는 예외 처리를 할 수 있습니다.

728x90