• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 這個書里的程序好象錯了?

    發表于: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.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>