3

fprintf を使用してドキュメントに文字列を追加しています。質問がある行は次のとおりです。

fprintf(win, bff[i - 2] != '\n' && bff[i - 2] != '\r' ? "\nmultiscreen=1" : "multiscreen=1");

コードは機能し、ファイル内の次の利用可能な行に追加multiscreen=1されます。

NULLしかし、私が正しく理解していれば、の最後に文字を追加することはありませんmultiscreen=1か? 私はそれをファイルに書き込んでいてNULL、文字列の末尾はCのものなので、これは問題ですか?

fputsそれとも、代わりに使用する方が正しいでしょfprintfうか?

4

3 に答える 3

7

文字列リテラル0の最後の文字は自動的にです。したがって、自分で追加する必要はありません。

NULターミネータはfprintf、ポインタからの文字の書き込みをいつ停止するかを知るためだけのものです(または使用している文字列関数)。NUL実際にはファイルに書き込まれません。

はい、フォーマットシーケンスを使用する質問へのコメントでpmgの提案を使用しない限り、のフォーマット機能を使用していないため、fputs代わりに使用することをお勧めします。fprintffprintf

于 2012-09-27T14:37:37.830 に答える
1

ファイルには必要ありませんNULL。これは C の規則であり、ファイルとは関係ありません。あなたは上手い。

于 2012-09-27T14:37:55.683 に答える
1

\0ファイルに書き込む場合、末尾は必要ありません。これは、C が文字列を区切るために使用する方法です。それ以外の場合、文字列がどこで終了するかを知る方法がないためです。

于 2012-09-27T14:38:28.173 に答える