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

wscanf

函数  <cwchar>

int wscanf (const wchar_t* format, ...);
从stdin读取格式化的数据
从标准输入(stdin)读取数据,并根据C宽字符串参数format将数据存储到由附加参数指定的位置。

附加参数应该指向已经分配的对象,该对象的类型由格式字符串中相应的格式说明符指定。

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

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

☲  参数



format
C宽字符串,它包含一个格式字符串,该格式字符串遵循与scanf格式相同的规范(详情请参阅scanf)。

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

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

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

☉  返回值



如果成功,函数将返回成功填充参数列表的项数。该计数可以匹配预期的项数, 或者由于匹配失败、读取错误或文件结束的范围而小于(甚至为零)。

如果发生读取错误或在读取时到达文件结束,则设置正确的指示符(feofferror)。 并且,如果任何一种情况发生在任何数据可以成功读取之前,则返回WEOF.

如果在解释宽字符时发生编码错误,该函数将errno设置为EILSEQ。

☣  示例



/* wscanf example */
#include <wchar.h>

int main ()
{
  wchar_t str [80];
  int i;

  wprintf (L"Enter your family name: ");
  wscanf (L"%ls",str);
  wprintf (L"Enter your age: ");
  wscanf (L"%d",&i);
  wprintf (L"Mr. %ls, %d years old.\n",str,i);
  wprintf (L"Enter a hexadecimal number: ");
  wscanf (L"%x",&i);
  wprintf (L"You have entered %#x (%d).\n",i,i);

  return 0;
}

可能输出:
Enter your family name: Soulié
Enter your age: 29
Mr. Soulié, 29 years old.
Enter a hexadecimal number: ff
You have entered 0xff (255).


🍄  另请参阅



scanf 从stdin读取格式化的数据(function )
wprintf 将格式化的数据打印到标准输出(function )
fgetws 从流中得到宽字符串(function )

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