0

fscanf 関数に問題がある

私の悪い英語を許してください。

プログラムは次のようにファイルを読み取ります。

status = fscanf(ifile, "%%!%11s", ifbuf);

ファイルが目的のエントリで直接始まる場合、たとえば

%! UTF-8
some text

fscanfの行を読み取りますifbuf。行が空白で始まる場合

    %! UTF-8
some text

fscanf何も読みません。

どちらfscanfの場合でも関数を機能させるには、フォーマット文字列にスペースを追加します。

status = fscanf(ifile, " %%!%11s", ifbuf);

関数の動作がどれほど正しいか知りたかったのfscanfです。

4

2 に答える 2

0

フォーマット文字列で使用sしています。これは、空白文字ではない一連のバイトに一致します。この関数はバイトを読み取り、フォーマットに従って解釈し、結果を引数に格納します。

あなたの場合、探しているフォーマットと一致しないスペースで始まる行が見つかります。

于 2012-09-23T08:22:47.597 に答える
0

観察された動作として説明するものは、正しい動作です。関数は、いくつかの (実際にはとを除くほとんどの) 変換仕様で先頭のscanf()空白をスキップするだけです。書式文字列のリテラル コンポーネントの場合、書式文字列内のスペースがデータ内の任意の数の空白文字と一致することを除いて、ほぼ文字どおりに動作します。%c%[

于 2012-09-23T08:35:55.797 に答える