• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fread(),fwrite()等について)

C言語でのファイルの読み書き方法について

このQ&Aのポイント
  • C言語のストリームを勉強中の私が、fopen(), fread(), fwrite()などの関数を使ったファイルの読み書き方法について困っています。
  • 具体的なプログラムの説明とソースコードを記載しています。プログラムは浮動小数点数の配列をファイルに書き込み、再度読み込むものです。
  • しかし、実行後にファイルをテキスト形式で開くと文字化けして表示される問題が発生しています。エラーが出ないため原因がわかりません。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#240995
noname#240995
回答No.4

モードフラグをバイナリ指定しているのでテキスト形式では数値に該当する文字コードの文字が見えてしまいます。 数字をテキストで読めるように書き込みたい場合は,数値を文字列に変換後のほうが良いかと思います。

hitosashi
質問者

お礼

回答ありがとうございます。 シンプルで分かりやすかったです。

その他の回答 (4)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.5

>それでは、このソースコードではmyfile内で文字化けが起こるのは仕方がないと思って良いのでしょうか? そもそも、そのプログラムではmyfileはテキストファイルとして扱ってはいませんから文字化けとか以前の話です。

hitosashi
質問者

お礼

回答ありがとうございます。 助かりました。

noname#208507
noname#208507
回答No.3

プログラムの冒頭を char d[] = { "10.2, 5.3, 7.91, 1.23, 7.7," "6.4, 89.12, 6.43, 5.55, 2.5" }; に変更してプログラムをコンパイル、実行し、myfileをテキスト形式で開いてみてください。 次に最後のfor文を printf("%s\n", d); に置き換えてコンパイル、実行して表示を確認してください。 それから、テキストファイルとバイナリファイルの違いを勉強しましょう。

hitosashi
質問者

お礼

回答ありがとうございます。 勉強し直して理解を深めます。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>結果が上手く表示されず困っています。 最後のprintf()で正しく表示されているんじゃないですか? 浮動小数点の関係で誤差があるかも知れませんが。 >myfileをテキスト形式で開くと > : >と文字化けして表示されてしまいます。 人間が読める形式で書き出してませんから当然かと。 コンピューターが読みやすい形式と人間が読みやすい形式が同じとは限りません。 人間が読みやすい形式で書き出したいのならば、1つずつprintf()やfprintf()などで書き出して下さい。 write()1回で…というわけには行きません。

hitosashi
質問者

補足

回答ありがとうございます。 DOS画面上ではしっかり表示されます。 ただ私の予想では、myfile内でもdouble d[10]が表示されるものだと思っていたので、文字化けして表示されていたので、あれ?って感じでした。 それでは、このソースコードではmyfile内で文字化けが起こるのは仕方がないと思って良いのでしょうか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

何がダメなんでしょうか?

関連するQ&A