0

コンテキスト-私は、より大きなプログラムに入るクラス用の単純なスタンドアロンの構成ファイルパーサーを書いています。これを行うのに非常に効果的なライブラリ(BOOSTなど)があることは理解していますが、クラスは厳密にスタンドアロンである必要があります(外部ライブラリはありません)。

だから、私はこのように少し見えるかもしれない設定ファイルを持っています:

output_file : some_output_file.root
input_file : input_file.txt
potential_file :

Potential_fileエントリは空白であるため、そのように読み取る必要があることに注意してください。

フォーマット指定子でfscanfを使用するつもりです

fscanf(cfg_file,"%s : %s\n",flag,value);

ただし、potential_fileフラグの場合はどうなりますか?文字列のは空になりますか?または、fscanfはファイル内で次に使用可能な文字列を読み取ろうとしますか?

4

1 に答える 1

0

fscanfの戻り値を確認する必要があります。正常に解析された引数の数を返します。パターンに従って3行目のコロンの後にスペースがない場合は、空の文字列は作成されません。その場合、解析は停止します。追加のチェックなしで安全にプレイしたい場合は、fscanfの前に値を初期化してください。

%s空白が見つかるまで後続の文字を読み取ることを意味します。後者は、空白、改行、またはタブとして定義されます。したがって、次の行にジャンプすることはありません。

この方法で質問にタグを付けたので、構成用のライブラリも検討してください。YAMLは読みやすく、Cバインディングがあります。

于 2012-06-15T00:22:59.973 に答える