[C언어] : scanf 함수

지환·2022년 1월 16일
0

C언어

목록 보기
25/37
post-thumbnail

표준 입력 함수 Scanf 함수를 알아보자.

  • 다양한 키워드로 문자, 문자열뿐만 아니라 정수, 실수까지 모두 입력 받을 수 있도록 형식화된 입력을 말한다.

  • 이와 같이 입력 받기 위해선 입력 형식 지정자가 필요하다.
    scanf("%d",&n) 여기서 %d를 의미한다.

  • scanf는 표준 입력 함수이기 때문에 Enter키나 Space 문자로도 입력 값의 구별이 가능하다.

  • scanf 함수는 문자열을 입력 받을 때, 중간에 공백이 껴있으면, 입력 버퍼에 그대로 남게 된다.

  • 문자열에 공백이 포함 된다면, gets함수를 사용하는 것이 더 좋다.

다음 예제를 보자.

  • scanf 함수에 "abc456"입력하게 된다면 abc는 버퍼에 남게 되고 123만 출력하게 된다. 이와 같은 원리를 이용해 나이를 입력 받겠다.

<전체코드>

#include <stdio.h>

int main()
{


	int temp = 0;
	while (1)
	{
		printf("너의 나이를 입력해 :");
		if (scanf_s("%d", &temp) == 0) // 실행에 실패하면 0을 반환한다.
		{
			rewind(stdin); //입력 버퍼에 남겨져 있는 값들을 초기화 했다.
			printf("[Enter] digit number !! \n");
		}
		else {
			if (temp > 0 && temp <= 150)
			{
				break; //정상적으로 잘 동작하면 break;
			}
			else {
			
				printf("잘못된 나이입니다!! \n");
			}

		
		}
	}
	printf("너의 나이는 !! %d\n", temp);
}
  • while문을 돌면서 예외조건 처리를 했다. 어려운 부분은 없으며 중요한 코드를 보겠다.

<코드1>

if (scanf_s("%d", &temp) == 0) // 실행에 실패하면 0을 반환한다.
		{
			rewind(stdin); //입력 버퍼에 남겨져 있는 값들을 초기화 했다.
			printf("[Enter] digit number !! \n");
		}
		else {
			if (temp > 0 && temp <= 150)
			{
				break; //정상적으로 잘 동작하면 break;
			}
			else {
			
				printf("잘못된 나이입니다!! \n");
			}
  • 각주에도 써 있지만, if문 조건 안에 scanf_s로 받는다. rewind를 통해서 버퍼 값을 초기화 시킨다.(예외처리1)

  • else문을 통해서 temp값에 대한 조건을 제시한다. 입력 받은 값의 범위를 보여주며 정상적으로 입력했으면, break문으로 탈출 -> 그게 아니라면 else

profile
아는만큼보인다.

0개의 댓글