当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 ungetwc用法及代码示例


C语言wchar头文件(wchar.h)中ungetwc函数的用法及代码示例。

用法:

wint_t ungetwc (wint_t wc, FILE* stream);
从流中删除宽字符
宽广的性格wc实际上被放回输入中,降低其内部文件位置好像以前getwc操作被撤消。

宽字符可能是也可能不是从在前面的输入操作中。在任何情况下,都将从以下位置检索下一个宽字符wc,独立于原始版本之一。

但是请注意,这仅会影响该设备上的进一步输入操作,而不是与之关联的物理文件的内容,对此函数的任何调用都不会对其进行修改。

某些库的实现可能支持多次调用此函数,从而使字符以相反的顺序可用放回去。尽管此行为没有标准的可移植性保证,并且在除第一个调用之外的任何数量的调用之后,其他调用都可能完全失败。

如果成功,该函数将清除文件结束指示符(如果当前已设置)。这位置指示器具有未指定的值,直到所有字符都放回ungetwc已被再次读取或丢弃。

调用fseekfsetpos或者rewind会丢弃以前使用此函数放回其中的所有字符。

如果参数传递为wcWEOF,操作失败,输入保持不变。

这是宽字符等价于ungetc(<cstdio>)。

参数

wc
这个wint_t提倡宽广的性格退缩。
该值在内部转换为wchar_t当放回去。
stream
指向一个指针FILE标识输入流的对象。
信息流尚未定向,或者wide-oriented(流上的第一个I /O操作确定它是否是字节-或者宽的-面向,请参阅fwide)。

返回值

成功之后,宽字符放回去。
如果操作失败,WEOF返回。

示例

/* ungetwc example */
#include <stdio.h>
#include <wchar.h>

int main ()
{
  FILE * pFile;
  wint_t wc;
  wchar_t buffer [256];

  pFile = fopen ("myfile.txt","rt");
  if (pFile!=NULL) while (!feof (pFile)) {
    wc=getwc (pFile);
    if (wc != WEOF) {
      if (wc == L'#') ungetwc (L'@',pFile);
      else ungetwc (wc,pFile);
      fgetws (buffer,255,pFile);
      fputws (buffer,stdout);
    }
  }
  return 0;
}


本示例打开一个现有文件,名为myfile.txt用于读取并打印其行,但首先获取每行的第一个字符,然后将其放回流中,除非该行以#,在这种情况下,将其替换为@

相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C ungetwc function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。