這個書里的程序好象錯了?
#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
|