這個書里的程序好象錯了?

發表于:2007-05-25來源:作者:點擊數: 標簽:程序書里錯了好象這個
#include unp.hsize_t /* Read n bytes from a descriptor */readn(int fd,void *vptr,size_t n){ ssize_t nleft,nread; char *ptr; ptr=vptr; nleft=n; while(nleft 0) { if((nread=read(fd,ptr,nleft))0) { if(errno==EINTR) nread=0 ; /* and call read()
 
#include "unp.h"
size_t          /* Read "n" bytes from a descriptor */
readn(int fd,void *vptr,size_t n)
{
     ssize_t   nleft,nread;
     char      *ptr;
     ptr=vptr;
     nleft=n;
     while(nleft >0) {
             if((nread=read(fd,ptr,nleft))<0) {
                     if(errno==EINTR)
                               nread=0 ;   /* and call read() again */
                     else
                               return(-1);
             }else if(nread ==0 )
                     break;             /*EOF*/
            nleft -= nread;
            ptr += nread ;
     }
     return(n-nleft);        /* return >= 0 */
}

 

這里考慮了兩種情況<0和==0,那剩下的就是>0的嘍,
>0的時候直接執行:
nleft -= nread;
ptr += nread ;
 
else是可缺省部分

c語言中的if語句的BNF是
if (expression) if-statement [else else-statement] ;

[此帖于 04-03-27 11:05 被 henryouly 編輯].
 

謝謝大家,看懂了。。默認的正確的動作就是else的情況,長見識了。。。

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97