swscanf ()- 读取宽字符数据

格式

#include <wchar.h>
int swscanf(const wchar_t *buffer, const wchar_t *format, argument-list);

语言级别

ANSI

线程安全

语言环境敏感

此函数的行为可能受当前语言环境的 LC_CTYPE 和 LC_NUMERIC 类别影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么此行为也可能受到当前语言环境的 LC_UNI_CTYPE 和 LC_UNI_NUMERIC 类别的影响。 当在编译命令上指定 LOCALETYPE (*CLD) 时,此功能不可用。 有关更多信息,请参阅 了解 CCSID 和语言环境

宽字符函数

有关更多信息,请参阅 宽字符

描述

swscanf() 函数等同于 fwscanf() 函数,只是自变量缓冲区指定了要从中获取输入的宽字符串,而不是从流中获取。 到达宽字符串的末尾相当于迂到 fwscanf() 函数的文件结束符。

返回值

swscanf() 函数返回已成功转换和分配的字段数。 返回值不包含已读取但未分配的字段。 在转换任何内容之前迂到字符串结尾时,返回值为 EOF。

errno 的值可以设置为 EINVAL,参数无效。

示例

此示例使用 swscanf() 函数从字符串 ltokenstring读取各种数据,然后显示该数据。
#include <wchar.h>                                     
#include <stdio.h>                                        
                                                          
wchar_t *ltokenstring = L"15 12 14";                      
int i;                                                    
float fp;                                                 
char s[10];                                               
char c;                                                   
                                                          
int main(void)                                            
{                                                         
   /* Input various data                                           */
  
   swscanf(ltokenstring, L"%s %c%d%f", s, &c, &i, &fp);   
                                                          
   /* If there were no space between %s and %c,        */  
   /* swscanf would read the first character following */ 
   /* the string, which is a blank space.                      */  
                                                          
   printf("string = %s\n",s);                             
   printf("character = %c\n",c);                          
   printf("integer = %d\n",i);                            
   printf("floating-point number = %f\n",fp);             
                                                          
}

相关信息