?? flsbuf.c
字號:
#include <stdio.h>char *malloc();int_flsbuf(c, iop) int c; register FILE *iop;{ register char *base; register n, rn; char c1; extern char _sobuf[]; if (iop->_flag & _IORW) { iop->_flag |= _IOWRT; iop->_flag &= ~_IOEOF; }tryagain: if (iop->_flag & _IONBF) { c1 = c; rn = 1; n = write(fileno(iop), &c1, rn); iop->_cnt = 0; } else { if ((base = iop->_base) == NULL) { if (iop == stdout) { if (isatty(fileno(stdout))) { iop->_flag |= _IONBF; goto tryagain; } iop->_base = _sobuf; iop->_ptr = _sobuf; goto tryagain; } if ((iop->_base = base = malloc(BUFSIZ)) == NULL) { iop->_flag |= _IONBF; goto tryagain; } iop->_flag |= _IOMYBUF; rn = n = 0; } else if((rn = n = iop->_ptr - base) > 0) { iop->_ptr = base; n = write(fileno(iop), base, n); } iop->_cnt = BUFSIZ - 1; *base++ = c; iop->_ptr = base; } if (rn != n) { iop->_flag |= _IOERR; return(EOF); } return(c);}intfflush(iop) register FILE *iop;{ register char *base; register n; if ((iop->_flag & (_IONBF|_IOWRT)) == _IOWRT && (base = iop->_base) != NULL && (n = iop->_ptr - base) > 0) { iop->_ptr = base; iop->_cnt = BUFSIZ; if (write(fileno(iop), base, n) != n) { iop->_flag |= _IOERR; return(EOF); } } return(0);}/* * Flush buffers on exit */_cleanup(){ register FILE *iop; extern FILE *_lastbuf; for(iop = _iob; iop < _lastbuf; iop++) fclose(iop);}intfclose(iop) register FILE *iop;{ register r; r = EOF; if (iop->_flag & (_IOREAD|_IOWRT|_IORW) && (iop->_flag & _IOSTRG) == 0) { r = fflush(iop); if (close(fileno(iop)) < 0) r = EOF; if (iop->_flag & _IOMYBUF) free(iop->_base); if (iop->_flag & (_IOMYBUF|_IONBF)) iop->_base = NULL; } iop->_flag &= ~(_IOREAD|_IOWRT|_IONBF|_IOMYBUF|_IOERR|_IOEOF|_IOSTRG|_IORW); iop->_cnt = 0; return(r);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -