ファイルから行を読み取ろうとしています。line
を使用して行を取得しfgets
ます。次に、を使用sscanf
して解析しようとします。時々私は電話sscanf
をして、それが間違った数の引数を返すことを発見します。そこで、同じline
文字列を再解析してみます。うまくいくこともあれば、うまくいかないこともあります(これにより、問題はsscanf
コード内の他の何かにあると私は信じるようになります)。これが私が意味することの例です:
i = sscanf(line,"%d/%d/%d %d/%d/%d %d/%d/%d %d/%d/%d\n", &faceV1, &faceUV1, &faceN1, &faceV2, &faceUV2, &faceN2, &faceV3, &faceUV3, &faceN3,
&faceV4, &faceUV4, &faceN4);
if(i == 12) {
//We gotta quad...
printf("Model.c: Quads not supported\n");
} else if(sscanf(line,"%d/%d/%d %d/%d/%d %d/%d/%d\n", &faceV1, &faceUV1, &faceN1, &faceV2, &faceUV2, &faceN2, &faceV3, &faceUV3, &faceN3) == 9) {
//Doesn't do what I expect!
...
しかし、私がそれを取り除きi = sscanf...
、チェックしi == 12
て直接行くとif(sscanf(line,"%d/%d/%d %d/%d/%d %d/%d/%d\n", &faceV1, &faceUV1, &faceN1, &faceV2, &faceUV2, &faceN2, &faceV3, &faceUV3, &faceN3) == 9)
、期待どおりに機能します。
では、この質問のタイトルに戻ってsccanf
、同じ文字列で複数回呼び出すことはできますか?私はそれを間違って呼んでいますか?または、コードの他の場所で問題を探す必要がありますか?