vscanf、vwscanf
stdio.h:インデックス への移動
ヘッダーファイル
stdio.h
カテゴリ
コンソール入出力ルーチン
プロトタイプ
int vscanf(const char *format, va_list arglist);
int vwscanf(const wchar_t *format, va_list arglist);
説明
stdin からの入力をスキャンして書式設定します。
メモ: Win32 GUI アプリケーションでは,この関数を使用しないでください。
v...scanf 系関数は,...scanf 系関数のかわりに使用できます。これらの関数の機能は,対応する ...scanf 系関数とまったく同じですが,引数リストではなく引数リストへのポインタを受け取る点が異なります。
メモ: 書式指定子の詳細は,「scanf の書式指定子」を参照してください。
vscanf は,一連の入力フィールドを stdin から読み取って,一度に 1 文字ずつスキャンします。各フィールドは,format が指す書式文字列で vscanf に渡された書式指定子にしたがって書式設定されます。最後に vscanf は,format に続く引数として渡されたアドレスに,書式設定した入力を格納します。入力フィールドと同じ数の書式指定子とアドレスが必要です。
vscanf は,通常のフィールド終了文字(ホワイトスペース)に到達する前に,特定のフィールドのスキャンを停止する場合があります。または,さまざまな原因で完全に処理を終了する場合もあります。考えられる理由については,scanf を参照してください。
戻り値
vscanf は,スキャン,変換,および格納に成功した入力フィールドの数を返します。この戻り値には,スキャンされたが格納されなかったフィールドは含まれません。格納されたフィールドがない場合,戻り値は 0 になります。
vscanf がファイルの終わりで読み取りを試みた場合,戻り値は EOF になります。
例
#include <stdio.h>
#include <stdarg.h>
int vscnf(char *fmt, ...)
{
va_list argptr;
int cnt;
printf("Enter an integer, a float, and a string (e.g. i,f,s,)\n");
va_start(argptr, fmt);
cnt = vscanf(fmt, argptr);
va_end(argptr);
return(cnt);
}
int main(void)
{
int inumber;
float fnumber;
char string[80];
vscnf("%d, %f, %s", &inumber, &fnumber, string);
printf("%d %f %s\n", inumber, fnumber, string);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |