fgetl.c
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:1k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. /*  fgetl.c - expand tabs and return lines w/o separators
  2.  *
  3.  *  Modifications
  4.  * 05-Aug-1988 mz Make exact length lines work correctly
  5.  *
  6.  */
  7. #include "..htools.h"
  8. /* returns line from file (no CRLFs); returns NULL if EOF */
  9. fgetl (buf, len, fh)
  10. char *buf;
  11. int len;
  12. FILE *fh;
  13. {
  14.     register int c;
  15.     register char *p;
  16.     /* remember NUL at end */
  17.     len--;
  18.     p = buf;
  19.     while (TRUE) {
  20.         c = fgetc (fh);
  21. if (c == EOF || c == 'n')
  22.     break;
  23. if (c != 'r')
  24.     if (len == 0) {
  25. ungetc (c, fh);
  26. break;
  27. }
  28.     else
  29.     if (c != 't') {
  30. *p++ = (char) c;
  31. len--;
  32. }
  33.     else {
  34. c = min (8 - ((p-buf) & 0x0007), len);
  35. Fill (p, ' ', c);
  36. p += c;
  37. len -= c;
  38. }
  39. }
  40.     *p = 0;
  41.     return ! ( (c == EOF) && (p == buf) );
  42. }