2

したがって、次のような行に直面したときにsscanfがどのように機能するのか疑問に思っています。

sscanf(input_string, "%s %s %s", cmd1, cmd2, cmd3);

ただし、input_stringに含まれる文字列トークンは1つだけだとします。cmd2とcmd3にはどのような値が割り当てられていますか?エラーがスローされますか?

GNUCコンパイラを使用しています。

4

2 に答える 2

4

追加のパラメーターには何も割り当てられません。からの戻り値はsscanf、正常に実行された変換の数を示しているため、この場合はを返し1ます。通常は、期待する数と比較するだけで、それ以外の場合は入力が悪いと想定します。

if (3 != sscanf(input_string,"%s %s %s", cmd1, cmd2, cmd3))
    fprintf(stderr, "Badly formatted input (expecting three strings)\n");

ファイルから読み取る場合、正しい入力が得られるまでループで実行したいことがよくあります。

while (3 != scanf("%s %s %s", cmd1, cmd2, cmd3))
    fprintf(stderr, "Please enter 3 strings:");
于 2012-10-08T19:23:27.533 に答える
2

http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/

成功すると、関数は引数リスト内の正常に入力された項目の数を返します。この数は、予想されるアイテム数と一致する場合もあれば、一致しない場合はゼロになる場合もあります。データが正常に解釈される前に入力が失敗した場合、EOFが返されます。

于 2012-10-08T19:22:33.380 に答える