나의 작은 valley

[C언어] 입력 확인 본문

Computer Science/[C언어] 문법 정리

[C언어] 입력 확인

붕옥 아이젠 2022. 11. 17. 12:46
728x90

사용자는 상상을 초월하는 입력을 할 수 있다. 훌륭한 프로그래머라면 그러한 경우를 모두 대비하고 사용자에게 친절히 설명 해주는 인터페이스를 만들어야 한다.

 

 

//사용자에게 정수를 입력 받는 코드

#include <stdio.h>

int main()
{
	printf("Please input an integer and press enter. \n");

	long input;
	char c;
	
	while (scanf("%ld", &input) != 1)	//long type에 해당하는 입력의 개수가 1개가 아니면
	{
		printf("your input - ");

		while ((c = getchar()) != '\n')
			putchar(c);		// input left in buffer
		printf(" - is not an integer. Please try again \n");
	}

	printf("Your input %ld is an integer. Thank you.\n", input);

	return 0;
}

cf) scanf()의 반환값은 제대로 입력받은 데이터,숫자의 개수

 

 

 

실행 시)

Please input an integer and press enter.
나는 천재
your input - 나는 천재 - is not an integer. Please try again
나는 바보
your input - 나는 바보 - is not an integer. Please try again
1
Your input 1 is an integer. Thank you.

 

 

 

기능 추가) 입력받은 숫자가 0~100 사이면 그렇다라고 출력

#include <stdio.h>

long get_long(void)
{
	long input;
	char c;

	while (scanf("%ld", &input) != 1)	//long type에 해당하는 입력의 개수가 1개가 아니면
	{
		printf("your input - ");

		while ((c = getchar()) != '\n')
			putchar(c);					// input left in buffer
		printf(" - is not an integer. Please try again \n");
	}

	printf("Your input %ld is an integer. Thank you.\n", input);

	return input;
}
int main()
{
	long number = get_long();

	if (0 < number && 100 > number)
		printf("Your input %ld is somewhere between 0 to 100.\n", number);

	return 0;
}

이렇게 함수로 만들어서 깔끔하게 코드를 짤 수 있다. (프로토타입으로 만드는 건 생략)

 

>>  함수가 밑에 있는것 마저도 거추장스럽다면 함수를 복사해서 source파일로 보내고 프로토타입은 header파일로 보낸 다음에 헤더파일을 import하는 방법도 있다.

 

 

 

그러면

#include <stdio.h>
#include "Header.h"

int main()
{
	long number = get_long();

	if (0 < number && 100 > number)
		printf("Your input %ld is somewhere between 0 to 100.\n", number);

	return 0;
}

 

제법 고수의 느낌이 나는 코드 완성 !!

728x90
Comments