[37일차](홍정모의따배c)입력확인하기
*본 강의수기는 교수님의 모든 ppt나 코드 화면을 붙인게 아닙니다. 따로 출처 표시나 과제표시
안한 모든 코드와 사진자료의 출처는 본 강의의 교수님 입니다.
정리는 다시한번 제가 보기위함과 어떤강의인지 알려드리는 것이고
제가 적은건 이해를 돕기 위한 부연설명과 제가 이해한 몇개의 중심적인 내용이 다소
생략이 되었습니다. 이 수기를 통해 공부하려 하지말고 흥미로운 내용이라면
'인프런- 홍정모의 따라하며 배우는c' 과정을 수강하시길 바랍니다.
사용자가 입력한것을 확인시키고
올바르게 입력을 도와주는 프로그램을 만들자.
- 교수님코드
#include <stdio.h>
int main()
{
printf("Please input an integer and press enter.\n");
long input;
char c;
while (scanf("%ld", &input) != 1)
{
printf("Your input - ");
while ((c = getchar()) != '\n')
putchar(c);
printf(" - is not an integer. Please try again.\n");
}
printf("Your input %ld is an integer. Thank you.\n", input);
return 0;
}
scanf값을 ld로 받고 반환값이 1이 아닐동안 while문 안에서 반복된다.
ld 를 입력하지않으면 입력한게 뭔지 확인시켜주고
계속 while문 안을 돌게한다
즉 입력한 꼬라지가 이상할때 while문 안에서 돌게하는 것이다.
ㄹㅇㅋㅋ
그런데 프로그램안에서 여러 입력을 받을때
각 입력한 값마다 상태를 알려주고 그입력값을 토대로 여러 기능을 추가하려고 할때,
그럴때마다 여러번 입력을 받기가 참 곤란하다
그래서 입력확인문 자체를 함수로 만들어주자.
우선 long타입으로 get_long이라는 함수를 프로토타입으로 먼저 선언해준다.
- 교수님코드
#include <stdio.h>
long get_long(void);
int main()
{
return 0;
}
long get_long(void)
{
printf("Please input an integer and press enter.\n");
long input;
char c;
while (scanf("%ld", &input) != 1)
{
printf("Your input - ");
while ((c = getchar()) != '\n')
putchar(c);
printf(" - is not an integer. Please try again.\n");
}
printf("Your input %ld is an integer. Thank you.\n", input);
return input;
}
get_long이라는 함수를 토대로
입력받은 값중 1부터 100의 수만 받는 코드를 만들어 보자.
- 교수님코드
#include <stdio.h>
long get_long(void);
int main()
{
printf("Please input a integer between 1 and 100.\n");
long number = get_long();
if (number > 1 && number <100)
printf("Good boy!\n");
else
printf("Wrong input.\n");
return 0;
}
long get_long(void)
{
printf("Please input an integer and press enter.\n");
long input;
char c;
while (scanf("%ld", &input) != 1)
{
printf("Your input - ");
while ((c = getchar()) != '\n')
putchar(c);
printf(" - is not an integer. Please try again.\n");
}
printf("Your input %ld is an integer. Thank you.\n", input);
return input;
}
55일때 확실히 칭찬을 해주고
194일때 잘못입력했다고 한다.
아쉬운게
- 문제
wrong input일때 다시입력하라고 하고 하고싶다
- 내코드
int main()
{
printf("Please input a integer between 1 and 100.\n");
long number = get_long();
while(1)
{
if (number > 1 && number < 100)
printf("Good boy!\n");
break;
else
printf("Your input is %ld Please input a integer between 1 and 100. \n", number);
continue;
}
return 0;
}
이렇게 했는데 else에서 오류가 뜬다고 한다.
- 교수님코드
long get_long(void);
int main()
{
printf("Please input a integer between 1 and 100.\n");
long number;
while(1)
{
number = get_long();
if (number > 1 && number < 100)
{
printf("Good boy!\n");
break;
}
else
printf("Your input is %ld Please input a integer between 1 and 100. \n", number);
continue;
}
return 0;
}
number를 while문 밖에서도 받기위해 number를 빼주고
number를 반복문안쪽에서 다시 선언해 줬다.
그리고 break를 쓸때 if문 안쪽으로 스코프를 설정을 해줘야한다.
정상작동