curs_scanw(3X) | curs_scanw(3X) |
名称
scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw - curses ウィンドウから書式化された入力を変換する書式
#include <curses.h>解説
scanw、 wscanw と mvscanw ルーチンは、 scanf [ scanf(3) を参照] と類似しています。これらのルーチンの効果は、あたかもウィンドウで wgetstr が呼び出され、 sscanf(3) のための入力として使用された結果の行のようです。 fmt フィールドの変数にマップされないフィールドは、失われます。vwscanw と vw_scanw ルーチンは、 vscanf に類似しています。それらは、可変長の引数リストを使用して wscanw を実行します。 3 番目の引数は、 <stdarg.h> で定義された引数リストを指すポインタである、 va_list です。
戻り値
vwscanw は、失敗すると ERR を返し、成功すれば、スキャンしたフィールドの数に等しい整数を返します。アプリケーションは、呼び出しでマップされたフィールドの数を決定するために scanw、 wscanw、 mvscanw と mvwscanw ルーチンからの返り値を使用できます。
移植性
XSI Curses standard, Issue 4 は、これらの関数を記述しています。関数 vwscanw は、"取り止める"とマークされていて、 <stdarg.h> インタフェースを使用する、関数 vw_scanw によって置き換えられることになっています。 Single Unix Specification, Version 2 は、 <stdarg.h> と同じファイルで使用することができない、 <varargs.h> をインクルードする必要があるので、 vwscanw が vw_scanw より優先されると記載しています。この実装は、ヘッダが <curses.h>にインクルードされるので、両方とも <stdarg.h> を使用します。XSI と Single Unix Specification, Version 2 の両方とも、これらの関数は、ERR または OK を返すと記載しています。基本的な scanf は、スキャンされた項目の数を返すことができ、 SVr4 コードは、この機能を使用するように文書化されているので、これは、故意に行われているものでなく、たぶん XSI で取り込まれた編集エラーです。移植性のあるアプリケーションは、OK 値 (0) が誤解されやすい傾向があるので、返り値が ERR である場合に限りテストするべきです。有用な結果を得るための 1 つの考えられる方法は、何かが処理されることを確実にするために書式化文字列の終わりに "%n"変換を使用することです。