[解決済み] 整数をファイルに書き込む方法 (fprintfとfwriteの違い)
2022-02-19 14:47:55
質問
ファイルに整数を書き込もうとしています(オープンモードはw)。 fprintfは正しく書きましたが、fwriteは意味不明なことを書いています。
int length;
char * word = "word";
counter = strlen(word);
fwrite(&length, sizeof(int), 1, file);
fwrite(word, sizeof(char), length, file);
となり、ファイル内の結果は
単語
が、代わりにfprintfを使うと、こんな感じ。
int length;
char * word = "word";
counter = strlen(firstWord);
fprintf(file, "%d", counter);
fwrite(word, sizeof(char), length, file);
このような結果がファイルに表示されます。
4ワード
何がいけなかったのか、どなたか教えてください。 ありがとうございます。
update: 最終的にはバイナリへの書き込みを変更したいのですが(wbモードでファイルを開きます)、私の実装に違いはあるのでしょうか?
どのように解決するのですか?
fprintf
は文字列を書き込みます。
fwrite
はバイトを書きます。つまり、最初のケースでは、整数を表すバイトをファイルに書き込んでいます。その値が "4" であれば、4バイトは印字不可能なASCII範囲にあるため、テキストエディタでは見ることができないのです。しかし、ファイルのサイズを見ると、おそらく4バイトではなく8バイトになっているはずです。
関連
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] mallocとcallocの違い?
-
[解決済み] スタティック・ライブラリとシェアード・ライブラリの違い?
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] floatとdoubleの違いは何ですか?
-
[解決済み】定義と宣言の違いは何ですか?
-
[解決済み】fprintf、printf、sprintfの違い?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】「構造体でもユニオンでもないものにメンバー'*******'を要求する」とはどういう意味ですか?
-
[解決済み】メモリー・クロバリング・エラー
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】シンプルなC言語のscanfが機能しない?重複