當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。