• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のfor文について)

C言語のfor文でバイナリファイルに値を書き込む方法

このQ&Aのポイント
  • C言語初心者です。バイナリファイルに値を書き込みたいですが、うまくいきません。値が半分だけ正常に入って、あとの半分はおかしな値が入ります。どなたか分かる方教えていただけませんか。
  • C言語のfor文を使用して値をバイナリファイルに書き込む方法を教えてください。正常に値を書き込むためのコードが知りたいです。
  • output.datというバイナリファイルに100から149までの値を書き込みたいですが、どうしても正常に書き込めません。半分だけ値が正常に書き込まれ、残りの半分は意図しない値が書き込まれてしまいます。解決策を教えてください。

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

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.4

三度です j=100; でいけます 100->255->0->255 あと、バイナリ出力なので、 unsigned charの方がいいですね

bonnnu1126
質問者

お礼

三度目のご回答ありがとうございます!! 非常に助かり、参考になりました。 お忙しい中ありがとうございました。

その他の回答 (3)

  • nagare
  • ベストアンサー率33% (280/831)
回答No.3

#2です 参考までに裏技です 理解してから使ってくださいね char j; j=0x00; for(i=0;i<456;i++) { output[i]=j++; }

bonnnu1126
質問者

お礼

なるほど!参考にさせていただきます。 初心者の私にはありがたいです。 ご回答ありがとうございます! 100から書き込むことは可能なのでしょうか?

  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

#1さん通り、jの範囲は0~255でなければいけませんよ >バイナリファイルに値を書き込みたい(100~149) 100~555になっているけど? こんな感じでしょうか j=0x00; for(i=0;i<456;i++) { output[i]=j; j++; if(256==j) { j=0x00; } }

bonnnu1126
質問者

お礼

ご回答ありがとうございます。 非常に参考になりました!見本まで書いていただいてとても助かります! >バイナリファイルに値を書き込みたい(100~149) 私の質問のミスです。 正しくは、「100から555の値を書き込みたい」です。 すみませんでした…。

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.1

char型が扱える数値の範囲は「-128~0~127」(0~255)までです。 それを超えた場合は今回のルーチンでは内容に保証はできません。

bonnnu1126
質問者

お礼

なるほど、確かに128から値がおかしくなっていました。 ご回答ありがとうございます!

関連するQ&A