Home C&C++函数库 c++ 语法 程序源码 Linux C库

fwprintf

函数   <cwchar>

int fwprintf (FILE* stream, const wchar_t* format, ...);

将格式化的数据写入流

将format指向的C宽字符串写入stream。
如果format包含格式说明符(以%开头的子序列), 则format后面的附加参数将被格式化并插入到结果字符串中,替换它们各自的说明符。

在format形参之后,函数期望至少与format中的格式说明符一样多的附加参数。

文件中宽字符的外部表示是多字节字符:获取这些字符时, 就好像调用了wcrtomb 来转换每个宽字符(使用流的内部mbstate_t对象)。

这相当于fprintf (<cstdio>)的宽字符版本。

☲  参数


stream
指向标识输出流的FILE对象的指针。
流不区分字符模式(流上的第一次i/o操作确定它是单字符还是宽字符,请参见fwide)。

format
C宽字符串,包含一个格式字符串,该格式字符串遵循与printf格式相同的规范, 但使用宽字符(请参阅printf了解详细信息)。

注意,所有格式说明符都具有与printf相同的含义;因此,应使用%lc写入宽字符(而不是%c), 以及应使用%ls用于宽字符串(而不是%s)。

... (附加参数)
根据格式字符串的不同,函数可能需要一系列附加参数, 每个参数都包含一个用于替换格式字符串中的格式说明符的值 (或者一个指向存储位置的指针,对于n)。

这些参数的数量至少应该与格式说明符中指定的值的数量一样多。多余的参数被函数忽略。

☉  返回值



如果成功,则返回所写的字符总数。
如果发生写错误,则设置错误指示符(ferror)并返回一个负数。
如果在写入宽字符时发生多字节字符编码错误,则将errno设置为EILSEQ并返回一个负数。

☣  示例



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

int main ()
{
   FILE * pFile;
   int n;
   wchar_t name [100];

   pFile = fopen ("myfile.txt","w");
   for (n=0 ; n<3 ; n++)
   {
     fwprintf (stdout, L"please, enter a name: ");
     fgetws (name, 100, stdin);
     fwprintf (pFile, L"Name %d: %s",n,name);
   }
   fclose (pFile);

   return 0;
}

这个示例提示用户输入3次name,然后将每个name以固定长度(总共19个字符+换行符)写入myfile.txt。

使用了两种格式标签:
%d:有符号的十进制整数;
%-10.10s:左对齐(-),最小10个字符(10),最大10个字符(.10),字符串(s)。

假设我们输入了John, Jean-Francois和Yoko这三个名字,myfile.txt将包含:

Name 1: John
Name 2: Jean-Franc
Name 3: Yoko

有关格式化的更多示例,请参见printf。

🍄  另请参阅



fprintf 将格式化的数据写入流(function )
wprintf 将格式化的数据打印到标准输出(function )
fwscanf 从流读取格式化的数据(function )
fwrite 将数据块写入流(function )
fputws 将宽字符串写入流(function )

联系我们 免责声明 关于CandCplus 网站地图