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);
                                                          
}