2011-12-31 2 views
0

C 소켓 프로그래밍을 사용하여 웹 프록시를 완성하려고합니다. 는 브라우저에서 클라이언트를 누르 STOP 버튼, 서버가 읽기 -1 반환하지만 이상하게 동안 테스트를 통과 할 것으로 보인다 때, 코드는 다음과 같습니다 : (rio_readlineb 사용자 버퍼로 버퍼 리오에서 강력한 읽기입니다 buf)c 소켓 읽기는 -1을 반환하지만 while 테스트를 이상하게 통과합니까?

while ((n = rio_readlineb(&rio,buf,MAXLINE)) > 0){ 
printf("%d",n) 
} 

n이 0보다 큼 때문에 -1을 어떻게 출력 할 수 있습니까? (주석에서)

추가 정보는 :

  • n의 유형은 유형 ssize_t 될 예정이다.
  • 반환 유형 rio_readlineb()ssize_t입니다.

...

  • 아차는 : 문제는 n 실제로 유형 size_t의이었다이었다.
+4

n은 어떤 문자입니까? – fge

+0

유형 n은 아마도 부호없는 유형입니까? – DipSwitch

+0

n의 타입이 ssize_t라면, 그것은 signed 타입 –

답변

5

n의 유형이 부호없는 정수 유형이 아닌지 확인하십시오. 부호없는 정수 유형의 객체의 결과는 0보다 크거나 같으면 항상 1 (참)입니다.

관련 문제