ungetc.c

来自「一个类似windows」· C语言 代码 · 共 51 行

C
51
字号
/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
#include <precomp.h>

#include <wchar.h>
#include <tchar.h>


/*
 * @implemented
 */
_TINT _ungettc(_TINT c, FILE *f)
{
  if (!__validfp (f) || !OPEN4READING(f)) {
      __set_errno (EINVAL);
      return _TEOF;
    }

  if (c == _TEOF)
    return _TEOF;

  if (f->_ptr == NULL || f->_base == NULL)
    return _TEOF;

  if (f->_ptr == f->_base)
    {
      if (f->_cnt == 0)
        f->_ptr+=sizeof(_TCHAR);
      else
        return _TEOF;
    }

  f->_cnt+=sizeof(_TCHAR);
  f->_ptr-=sizeof(_TCHAR);

#if 1
  if (*((_TCHAR*)(f->_ptr)) != c)
    {
      f->_flag |= _IOUNGETC;
      *((_TCHAR*)(f->_ptr)) = c;
    }
#else
  /* This is the old unicode version. Dunno what version is most correct. -Gunnar */
  f->_flag |= _IOUNGETC;
  *((_TCHAR*)(f->_ptr)) = c;
#endif

  return c;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?