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

fwscanf

函数   <cwchar>

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

从流读取格式化的数据

从stream 中读取数据,并根据C宽字符串格式将它们存储到附加参数指定的位置。
附加参数应该指向已经分配的对象,该对象的类型由格式字符串中相应的格式说明符指定。

文件中宽字符的外部表示形式是多字节字符:这些字符的编译就像调用了mbrtowc一样 (使用流的内部mbstate_t对象)。

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

☲  参数


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

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

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

... (附加参数)
根据格式字符串的不同,函数可能需要一个附加参数序列,每个参数包含一个指针, 该指针指向分配的存储空间,在该存储空间中,对提取出来的字符的解释将以相应的类型存储。

这些参数的数量至少应该与格式说明符存储的值的数量一样多。其他参数被函数忽略。

☉  返回值



如果成功,函数将返回成功填充参数列表的个数。该数可以等于 或者由于匹配失败、读取错误、文件结束的范围而小于(甚至为零)预期的个数,。
如果发生读取错误或在读取时到达文件结束,则设置对应的指示符(feofferror)。 并且,如果任何一种情况发生在任何数据可以成功读取之前,则返回EOF。
如果在解释宽字符时发生编码错误,该函数将errno设置为EILSEQ。

☣  示例



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

int main ()
{
  wchar_t str [80];
  float f;
  FILE * pFile;

  pFile = fopen ("myfile.txt","w+");
  fwprintf (pFile, L"%f %ls", 3.1416, L"PI");
  rewind (pFile);
  fwscanf (pFile, L"%f", &f);
  fwscanf (pFile, L"%ls", str);
  fclose (pFile);
  wprintf (L"I have read: %f and %ls \n",f,str);
  return 0;
}

这个示例代码创建了一个名为myfile.txt的文件,并向其中写入一个浮点数和一个字符串。 然后,流被回退定位并使用fwscanf读取两个值。它最终产生类似于:

I have read: 3.141600 and PI

🍄  另请参阅



fwprintf 将格式化的数据写入流(function )
wscanf 从标准输入读取格式化的数据(function )
fread 从流中读取数据块(function )
fgetws 从流中得到宽字符串(function )

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