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。
🍄 另请参阅