2013-02-11 5 views
1

그래서 난 처음 #DEFINE의 SENTINEL -1 C 프로그래밍 : 사용자가 센티널 값을 입력 한 후 어떻게 프로그램을 종료합니까?

및 특정 기능에

, 내가 설정 if 문
void blahblah(blah) 
{ 
    printf("Enter an integer (-1 to quit)"); 
    scanf("%d", &value); 
    if (value == SENTINEL) 
    return; 
} 

하지만 난 그것을 원하는 것처럼 프로그램을 종료 아니에요 어떤 이유로

?

+0

int x = scanf ("% d % d", & foo, &bar);'1234 hello "라고 입력하면 x는 무엇이겠습니까? 또한 getchar()이 반환 할 문자 상수는 무엇입니까? = scanf ("% d % d", & foo, &bar);'scanf가 EOF 나 다른 에러를 만나면 여기서 무엇을 할 것인가? int z = scanf ("% d % d", & foo, &bar);' 그리고 두 개의 int 변수 foo와 bar에 값을 할당합니다. 무엇이 z가 될까요? – Sebivor

답변

1

return은 종료를 의미하지 않으며, 함수에서 반환하는 것을 의미합니다. if 문이 false 인 경우 함수가 어쨌든 반환하기 때문에 if 문은 쓸모가 없습니다.

당신은 아마도 blahbalh에서 값을 반환하여 종료라고 말하고 싶습니다.

+0

그래요, 그렇다면 main으로 돌아가는 값을 반환하면 함수를 종료시키는 코드는 무엇입니까? – iopeia

+0

main –

+0

... exit();를 사용하여'exit (EXIT_SUCCESS);'... – Sebivor

0

전체 프로그램을 종료하려면 returnexit(0);으로 대체하십시오. 또한 value의 데이터 형식이 이 아니고 unsigned int이 아닌지 확인하십시오.

0

정상적인 방법은 반환을 유발하는 플래그를 설정하는 것입니다. main()에서 -하지만 exit()를 사용하여 코드의 모든 부분에서 프로그램을 즉시 중단 할 수 있습니다.

exit()를 사용하면 프로그램이 종료되고 실행하려는 종료/정리 코드가 없습니다.

다시 편집 해주세요. 잘못된 언어로 생각하고 있습니다. exit()는 EXIT_SUCCESS 또는 EXIT_FAILURE 중 하나의 반환 상태를 나타내는 int 매개 변수를 예상합니다.

+0

을 호출한다; 경고를 준다 : 함수 'exit'의 암시 적 선언; 빌드의 암시 적 선언 t-in 함수 'exit; 출구가 거의 기능하지 않는 argumetns – iopeia

+0

exit (0); 나에게 같은 오류를 준다 – iopeia

+0

나가기 위해 전달해야하는 값을 보려면 내 편집을 참조하십시오. http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.13.html#exit –

0

프로그램 종료 이유는 없지만 값 == SENTINEL 일 때만 함수를 반환 (반환)합니다.

또한 세 가지 문제가 있습니다. value! = SENTINEL 인 경우 정의되지 않은 동작 인 함수를 반환하지 않습니다. 매개 변수 blah에 유형이 없습니다 (int blah). 해당 함수가 작동하려면 값이 전역이어야합니다.

+0

blahblah가 함수가 반환 될 것으로 기대하는 인상을 어디에서 얻었습니까? 나는 아무 문제도 거기에서 보지 않는다. 내가 보는 문제는 scanf의 반환 값이 검사되지 않기 때문에 유용한 값이 값에 포함된다는 보장이 없다는 것입니다. – Sebivor