- 论坛徽章:
- 0
|
看到第8章getc的实现时,书中有
typedef struct _iobuf {
int cnt; /* characters left */
char *ptr; /* next character position */
char *base; /* location of buffer */
int flag; /* mode of file access */
int fd; /* file descriptor */
} FILE;
#define getc(p) (--(p)->cnt >= 0 ? (unsigned char) *(p)->ptr++ : _fillbuf(p))
#define putc(x,p) (--(p)->cnt >= 0 ? *(p)->ptr++ = (x) : _flushbuf((x),p))
为什么getc和putc的条件操作符的条件都是检查FILE指针的cnt值是否大于0?我觉得putc(x,p) 应该是
(++(p)->cnt <= bufsize之类的,因为每putc一个字符,缓冲区中的字符就多了一个,这样FILE.cnt的定义才能统一。望牛人解答 |
|