7
sscanf(line, "%d %64[^\n", &seconds, message);

%64[^は最大 64 文字という意味ですか? GNU C Compiler で動作する必要がありますか?

4

1 に答える 1

10

これは、「最大 64 文字を読み取るか、改行に達したら停止するか、どちらか先に来る方」を意味します。標準で指定されているため、すべての標準ライブラリがサポートする必要があります。

C11 7.21.6.2

[期待される一連の文字 (scanset) から空でない一連の文字に一致します。[...] 変換指定子には、対応する右括弧 (]) までの、フォーマット文字列内の後続のすべての文字が含まれます。

左括弧の後の文字がサーカムフレックス (^) でない限り、括弧の間の文字 (スキャンリスト) がスキャンセットを構成します

コメントに記載されているように]、スキャンリストを区切るにはおそらくマッチングが必要です。指定子は必要ありませs

于 2012-05-25T07:23:19.010 に答える