←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板1こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.4459

数値データのバイナリ出力について
投稿者---初心者(2005/08/19 15:11:38)


初心者です。

Borland C++5.5を用いてデータのバイナリ出力を試みているのですが、
下記テストプログラムを実行させて実際にできたファイルtest.binの
サイズをチェックしたところ、通常は予期されるとおり4バイトになるの
ですが、不思議なことにimaxを10としたときだけ5バイトになって
しまいます。これが原因してimaxが10より大きくなるデータについては、
freadで正しくデータを読み込むことができないようです。
何が問題なのでしょうか。ご教授お願い申し上げます。

#include <stdio.h>
#include <stdlib.h>

void main(){
  FILE *fp;
  int imax;
  char s[10];

  gets(s);
  imax = atoi(s);

  fp = fopen("test.bin","w");
  fwrite(&imax, sizeof(int), 1, fp);
  fclose(fp);

}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:数値データのバイナリ出力について 4460 YuO 2005/08/19 15:19:35


No.4460

Re:数値データのバイナリ出力について
投稿者---YuO(2005/08/19 15:19:35)


>何が問題なのでしょうか。ご教授お願い申し上げます。

fopen時に"wb"としていないことです。

BCCでは,'\n'に10という値を与えています。
テキストストリームに'\n'を出力すると,BCCでは13 10と出力されます。


imaxに10という値を入れた場合,メモリ上では
0A 00 00 00
という4バイトからなっています。これをテキストモードで出力すると,
ライブラリは最初の0Aを見て,0Dと0Aを出力します。
その後,00を3つ出力するので,合計5バイトになります。



この投稿にコメントする

削除パスワード

No.4461

ありがとうございました!
投稿者---初心者(2005/08/19 16:18:21)


YuO様

大変参考になりました。
お陰様で本来のプログラムも無事動作することになりました。
本当にありがとうございました m(_)m



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity