2026-09-21
parse_pair.c
#include <stdio.h>
// write this: parse two ints out of `line` with sscanf, writing them to
// *a and *b. Return 1 if both were parsed, 0 otherwise -- check sscanf's
// own return value, don't just trust that *a and *b were set.
int parse_pair(const char *line, int *a, int *b) {
}
parse_pairを実装してください。sscanfの戻り値を確認し、2つとも読み取れたときだけ1を、そうでなければ0を返すこと。
Reference
int parse_pair(const char *line, int *a, int *b) {
return sscanf(line, "%d %d", a, b) == 2;
}
sscanfの戻り値は「実際に代入できた変換指定の数」であり、*a・*bが書き換わったかどうかを保証する唯一の手がかりです。呼び出し側が戻り値を見ずに*a・*bをそのまま使うと、入力が数値でなかった場合や入力が途中で終わっていた場合に、書き換わっていない(呼び出し前の)値をそのまま使ってしまいます。ここでは期待する変換数(2)と一致するかどうかを比較するだけで、この確認を関数の中に閉じ込めています。これは参考実装であり、唯一の正解ではありません。