マニュアルページには、の署名sscanf
は
sscanf(const char *restrict s, const char *restrict format, ...);
入力が整数かどうかをチェックするためにこのように関数が使用されているSO に関する回答を見てきました。sscanf
bool is_int(char const* s) {
int n;
int i;
return sscanf(s, "%d %n", &i, &n) == 1 && !s[n];
}
これを見ると、文字列が終端文字までスキャンされている!s[n]
かどうかを確認することが示唆されているようです。したがって、関数が終了したときにsscanf が文字列に含まれるインデックスを表すと仮定します。sscanf
\0
n
s
しかし、変数はi
どうですか?どういう意味ですか?
編集:
より明確に言うと、最初のパラメーターとしてsscanf
型のポインターを望んでいるという署名が表示されます。char *
文字シーケンスを解析する方法と、変換指定子と同じ数の変数を次のパラメーターとして認識できるように、seconf パラメーターとしての書式指定子。i
解析された整数を保持するためのものであることがわかりました。
書式指定子が 1 つしかないので、 の機能を推測してみましたn
。
上記の私の仮定はn
正しいですか?