inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

8.6 입력 확인하기

원하는 값이 안 나옵니다.

218

qpalz

작성한 질문수 6

0

long get_long(void);

int main()

{

long num1;

while (1)

{

printf("Input an integer 1 between 100.\n");

num1 = get_long();

if (num1 > 1 && num1 < 100)

{

printf("okay!");

break;

}

else

printf("try again!");

}

return 0;

}

long get_long(void)

{

long num;

char c;

printf("Input an integer and press enter.\n");

while (scanf("%ld", &num) != 1)

{

printf("your input (");

while ((c = getchar()) != '\n')

putchar(c);

printf(") is not an integer.\n");

}

printf("your input (%ld) is correct!", num);

}

제가 이렇게 작성을 했는데요 

숫자가 저 범위에 해당하지 않는 것을 넣어도 

if (num1 > 1 && num1 < 100)을 수행하길래 디버그를 해봤는데요

제가 처음에 10000을 입력했는데  이게 함수 get_long를 거쳐서 

num1이 34가 됐는데 왜  이렇게 된 걸까요?

뭐가 잘못된 걸까요?

c

답변 2

2

홍정모

도와드리기 어려운 형태로 질문을 하셨는데 해결하셨다니 다행입니다.

다만, 반환 자료형이 없는 함수로부터 억지로 반환값을 받으려고 하면 컴파일 오류가 발생했을텐데 그게 좀 이상하네요. 초보때는 뭔가 정신이 없지만, 컴파일러는 알아 듣기 힘든 메시지를 던져줄 지언정 거짓말을 하지는 않습니다. 차분히 다시 검토해보시는 것이 좋겠습니다.

(파이썬에서는 반환값이 없으면 강제로 null을 넣어줘서 디버깅이 힘든 경우가 있었던 것으로 기억합니다. C/C++은 엄격하기 때문에 이런 점은 없습니다.)

1

haon

else문, get_long함수의 2번째while문에서 왜 중괄호{}를 안쓰는지 궁금하긴 하지만 오류는 찾았습니다. 

9줄의 num1 = get_long();는 get_long함수를 부르고 반환값을 num1안에 대입해야하는데 반환값이 없습니다. (오류가 나면 차라리좋을텐데...) 참고로 반환값이없는함수를 불러오면 null이 들어있을줄알았는데 0이 들어있었습니다.

#include <stdio.h>
long get_long(void);
int main()
{
	long num1;
	while (1)
	{
		printf("Input an integer 1 between 100.\n");
		num1 = get_long();
		if (num1 > 1 && num1 < 100)
		{
			printf("okay!");
			break;
		}
		else
			printf("try again!");
	}
	return 0;
}
long get_long(void)
{
	long num;
	char c;
	printf("Input an integer and press enter.\n");
	while (scanf("%ld", &num) != 1)
	{
		printf("your input (");
		while ((c = getchar()) != '\n')
			putchar(c);
		printf(") is not an integer.\n");
	}
	printf("your input (%ld) is correct!", num);
	return num;
}

0

qpalz

감사합니다.

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

42

3

main 함수에서 왜 int만 선언이 되는걸까요

1

51

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

51

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

46

1

프로토타입과 함수간의 인자 불일치

1

72

2

12.12 헤더 관련 질문

1

59

2

Visual Studio Community 2026 사용 문의

1

131

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

59

2

getchar(), putchar()

1

92

3

강의자리ㅛ

1

78

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

112

2

소스파일안에 여러 파일

1

74

2

F5와 F7의 차이

1

75

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

68

1

Step over 기능 문의

1

52

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

64

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2

11.5 코드 구현

1

66

2