2012-10-09 7 views
3

함수의 반환 값을 검사하는 코드를 만들기 시작하고 있지만 일부 오류를 포착 한 후에 절차를 수행하는 방법을 잘 모르겠습니다. 는 fgets에서 예를 들어'puts'반환 값을 확인한 다음 무엇을?

:

while(fgets(rta, 3, stdin) == NULL) { 
     printf("Ocurrio un error al evaluar su respuesta. Intente nuevamente./n"); 
} 

그러나 puts에 대한

?

그것은 오류에 EOF를 반환합니다, 그래서 확인하십시오

if(puts("Message") == EOF) { 
    error handle... 
} 

상담자가 실패하면 할 supossed하고있는 무슨이다. 콘솔 (이 콘솔 응용 프로그램)에서 메시지를 표시 할 수 있다고 생각하지만 puts 오류가 발생하면 내 메시지도 실패합니다. (왜냐하면 puts도 사용하기 때문입니다).

assert을 사용하여 메시지를 표시하고 앱을 종료해야합니까?

고마워요.

+0

stdin/stdout을 읽고 쓸 때 오류 처리가 빡빡 할 필요는 없습니다. – goji

답변

1

더 이상 사용할 수없는 사람/사람과 통신해야하는 필사적 인 필요가 없으면 일반적으로 그러한 기능의 반환 값을 무시합니다.

진도 또는 실패 기록이 정말로 필요한 경우 로그 파일을 열고 거기에 모든 메시지를 쓰거나 syslog와 같은 것을 사용하십시오.

기본적으로 stdio를 사용하는 경우 프로그램을 파이프 (예 : | less)에 연결하거나 stdout을 사라지게 할 가능성이 있습니다.

printf 및 puts의 반환 값을 무시하면 lint와 같은 프로그램에서 불평하지만 실제로 극단적 인 경우를 제외하고는 반환 값의 99 %가 쓸모가 없습니다.

1

글쎄, 그들이 말한대로, 의심의 여지가 있다면.

모든 사례가 설명되도록 훈련 된 생각을 포함시키는 것이 좋습니다. 하지만 반환 값을 어떻게 처리해야할지 확실하지 않으면 명확하게 처리 할 필요가 없습니다.

코드에서이 결정을 전달하려면 식을 void로 캐스팅하여 반환 값을 명시 적으로 버릴 수 있습니다.

(void)puts(""); 

이렇게하면 반환 값을 무시하는 경고 메시지가 표시됩니다.

관련 문제