나의 작은 valley
[C언어] 입력 확인 본문
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
'Computer Science > [C언어] 문법 정리' 카테고리의 다른 글
[C언어] put()함수 소개 (0) | 2022.11.18 |
---|---|
[C언어] 입력 스트림 (0) | 2022.11.18 |
[C언어] 숫자와 문자를 섞어서 입력받기 (0) | 2022.11.17 |
[C언어] 입출력 방향 재지정 (0) | 2022.11.17 |
[C언어] 파일의 끝(EOF) (0) | 2022.11.16 |
Comments