小编yua*_*ang的帖子

修改fflush(),保证在C中连续两次调用ungetc()

我是C初学者,我想连续两次调用ungetc()虽然我知道在常规C中它是不允许的.有人告诉我,我可以修改Fflush()做这项工作,但我不知道该怎么做.

这是我的代码,我Fflush唯一允许的代码,我ungetc()希望它允许两次.

#define altUngetc(c, fp) ((fp)->next > (fp)->buffer && (c) != EOF ? \
 *--(fp)->next = (c) : EOF)

int altGetc(ALT_FILE *fp) {
  if (fp->next == fp->buffer + fp->bufSize)
  altFflush(fp);

  return fp->flags & FILE_ATEOF ? EOF : *fp->next++;
}

int altFflush(ALT_FILE *fp) {
  int res;

  if (fp->fd < 0 || fp->flags & FILE_ATEOF)
     return EOF;
  if (fp->flags & FILE_READ) {                               
     res = read(fp->fd, fp->buffer, BUF_SIZE);               
     if (res == 0)                                           
        fp->flags |= FILE_ATEOF;                             
     fp->bufSize = …
Run Code Online (Sandbox Code Playgroud)

c stdio ungetc fflush getc

1
推荐指数
1
解决办法
237
查看次数

标签 统计

c ×1

fflush ×1

getc ×1

stdio ×1

ungetc ×1