간략한 C언어 오류 찾기
글쓴이: jonure / 작성시간: 수, 2017/05/17 - 9:07오후
안녕하세요!!
처음으로 글을 쓰는데 도무지 풀리지 않아 이렇게 올려아요.
우선 실행창이 이렇게 나와야합니다.
[실행화면1]
정수를 입력하시오:90
정수를 입력하시오:107
큰 정수: 107, 작은 정수: 90
계속하려면 아무 키나 누르십시오 . . .
그리고 소스파일에는 이렇게 있으며
#include<stdio.h> int main(void) { int num1; int num2; num1 = GetInteger(); num2 = GetInteger(); printf("큰 정수: %d, 작은 정수: %d",GetMax(num1,num2),GetMin(num1,num2)); }
그다음 헤더파일에는
void GetInteger(void) { int num; GetMax GetMin printf("정수를 입력하시오:"); scanf("%d",num); return num; } int GetMax(int x, int y) { return (x>y) ? x : y; } int GetMin(int x, int y) { return (x<y) ? x : y; }
이렇게 나와있습니다. 도대체 어디가 어떻게 틀린지 정말 고개숙여 여쭤보고 싶습니다.
Forums:
int GetInteger(void) ...
C 언어 교재를 처음부터 차근 차근 공부하시길 권합니다.
GetInteger() 에서 return 값을 void 로 정의했는데 정수를 return 하려고요?
컴파일 에러나겠지요.
그걸 고치더라도 또 scanf() 에서 실행 에러 날 겁니다.
이런수준에서는 물어봐서 해결하면 본인에게는 아무 도움이 안됩니다.
'기본' 이라는것이 있지 않겠습니까?
여의도자바
윗 분 말씀이 맞고요.
일단 컴파일이 안될 것 같네요. 그리고...,
1. 기본적으로 입출력은 main에서 지시하고 세부 처리를 sub routine에서 - 재사용한다는 점에서 - 함수화하는 것이 정상입니다. 이 부분 "num1 = GetInteger();"이 어색한 것이 괄호 속에 입력을 넣고 함수를 호출한 후에 반환 값을 바로 처리하는 게 여러 면에서 효율적입니다. 귀하의 codding은 VB를 보는 것 같네요.
2. scanf는 terminal 입력이니 당연히 char로 들어오겠죠. 그렇다면 "%s"로 format해서 숫자로 cast 하던지 해야겠죠.
3. GetInteger() 이하의 함수들은 함수 원형이 어딘가에 기술이 돼있어야 할 뿐 아니라 ";"도 빠졌네요.
4. void의 의미를 확인해보시고..., return하면서 "?" 연산자가 될지 안될지는 솔직히 모르겠네요.
5. 헤더 파일의 목적은 본체 수정의 지양 및 전체 recompile을 감축하자는 것이므로 위 함수들은 .h가 아니라 .c로 만들어서
함수 원형들을 main 위에 기술하는 것이 정상이라 생각됩니다. 끝.
댓글 달기