fwide

来自cppreference.com
< c‎ | io
 
 
 
在标头 <wchar.h> 定义
int fwide(FILE* stream, int mode );
(C95 起)

mode >0,则试图令 stream 为宽取向。若 mode <0,则试图令 stream 为字节取向。若 mode ==0,则只查询流的当前取向。

若已经决定流的取向(通过执行输出或通过之前调用 fwide),则此函数不做任何事。

目录

[编辑]参数

stream - 指向修改或查询的 C I/O 流的指针
mode - 大于零的整数设置流为宽,小于零的整数设置流为窄,零为仅查询

[编辑]返回值

若流在此调用后为宽取向,则为大于零的整数,若流在此调用后为字节取向,则为小于零的整数,若流无取向,则为零。

[编辑]示例

下列代码设置并重置流的取向。

#include <stdio.h>#include <stdlib.h>#include <wchar.h>   void show_orientation(int n){ n <0?puts("\t窄取向"): n >0?puts("\t宽取向"):puts("\t无取向");}   void try_read(FILE* fp){int c =fgetc(fp); c ==EOF?printf("\t读取窄字符失败\n"):printf("\t读取窄字符 '%c'\n", c);   wint_t wc =fgetwc(fp); wc == WEOF ?printf("\t读取宽字符失败\n");:printf("\t读取宽字符 '%lc'\n", wc);}   int main(void){enum fwide_orientation { narrow =-1, query, wide };   FILE* fp =fopen("main.cpp", "r");if(!fp){perror("fopen() 失败");returnEXIT_FAILURE;}   puts("1) 新打开的流是无取向的。"); show_orientation(fwide(fp, query));   puts("2) 建立字节取向。"); show_orientation(fwide(fp, narrow)); try_read(fp);   puts("3) 只有 freopen() 可以重置流的取向。");if(freopen("main.cpp", "r", fp)==NULL){perror("freopen() failed");returnEXIT_FAILURE;}   puts("4) 重新打开的流是无取向的。"); show_orientation(fwide(fp, query));   puts("5) 建立宽取向。"); show_orientation(fwide(fp, wide)); try_read(fp);   fclose(fp);}

可能的输出:

1) 新打开的流是无取向的。 无取向 2) 建立字节取向。 窄取向 读取窄字符 '#' 读取宽字符失败 3) 只有 freopen() 可以重置流的取向。 4) 重新打开的流是无取向的。 无取向 5) 建立宽取向。 宽取向 读取窄字符失败 读取宽字符失败 '#'

[编辑]引用

  • C23 标准(ISO/IEC 9899:2024):
  • 7.29.3.5 The fwide function (第 TBD 页)
  • C17 标准(ISO/IEC 9899:2018):
  • 7.29.3.5 The fwide function (第 309 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.29.3.5 The fwide function (第 423 页)
  • C99 标准(ISO/IEC 9899:1999):
  • 7.24.3.5 The fwide function (第 369 页)

[编辑]参阅

打开文件
(函数)[编辑]
fwide 的 C++ 文档
close