C言語のsscanf関数の使い方
文字列からフォーマット付き入力を読み取る関数 sscanf の書式は次のとおり。
int sscanf(const char *str, const char *format, …);
str は読み込む文字列、format は入力形式を指定する文字列、… は可変長引数で読み込むデータのアドレスを表す。
sscanf関数は、書式パラメータの書式に従ってstr文字列的内容を解析し、解析したデータをformatで指定された方法に従って対応するアドレスに格納します。その動作はscanf関数に似ていますが、sscanf関数は文字列から入力を読み取り、scanf関数は標準入力ストリームから入力を読み取ります。
例えば、sscanf関数を使用して、文字列から整数と浮動小数点数をどのように読み取るかを示したサンプルは次のとおりです。
#include <stdio.h>
int main() {
char str[] = "42 3.14";
int num;
float f;
sscanf(str, "%d %f", &num, &f);
printf("num = %d\n", num);
printf("f = %f\n", f);
return 0;
}
出力結果:
num = 42
f = 3.140000
上記の例では、sscanf関数は文字列strから”%d %f”の形式でデータを解析し、整数を変数numに、浮動小数点を変数fに格納します。
sscanf関数は、一致するパラメーターを割り当てた個数を返しますが、返り値がformat文字列内のフォーマット指定子の個数より小さいと、解析が失敗していることを示します。また、解析するデータ型とformat内のフォーマット指定子が一致しない場合、解析が失敗したり、誤った結果が得られたりすることがあります。したがって、sscanf関数を使用する際には、フォーマット指定子と読み取るデータ型が一致していることを確認する必要があります。