アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のプログラムで試しているのですが、コンパイルはできても各配列の要素が表示されません。なぜなんでしょうか?

#include<stdio.h>
main()
{
FILE *fp;
int i,b[10];
char a[10];

gets[a]; //ファイル名を指定

fp = fopen(a,"rb"); //バイナリモードでオープン

fread(b,3,10,fp);   //配列に3byteづつ書き込んだつもり

for(i=0;i>=9;i++){
printf("%02x\n",b[i]); //この部分の表示がされない。
}

fclose(fp);
}

レベルの低い質問ですいませんがよろしくお願いします。

A 回答 (4件)

>ちなみに3バイトづつ配列に入れていくことはfreadをつかってできますでしょうか?



下の2通りが普通ですかね?
ただし、両方ともb[]の初期化をあらかじめしておかないと
4バイト目にごみが残っていますので注意してください。


方法1
3バイトずつ複数回に分けて読む。

for(i=0;i<=9;i++){
fread(b,3,1,fp);
printf("%02x\n",b[i]);
}

方法2
まとめて読んで、切り分ける

char buf[30];

fread(b,1,30,fp);
for(i=0;i<=9;i++){
memcpy(&b[i], &buf[i*3],3);
printf("%02x\n",b[i]);
}

でしょうかね?

で、それって本当に整数値なんですか?
そもそも、もとのデータはどのようにファイルに書き込まれたのですか?
普通は3バイトずつなんて整数値はファイルに書かないんですけど。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
その方法でやってみたいと思います。

お礼日時:2002/08/18 01:27

intは、32bitOSなら4バイトです。


3バイトずつ読んでもint配列にはちゃんと入らないような・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かにint型なのできちんと表示されませんでした。
ちなみに3バイトづつ配列に入れていくことはfreadをつかってできますでしょうか?

お礼日時:2002/08/17 03:15

> for(i=0;i>=9;i++){



for( i = 0; i <= 9; i++ ){

それと、

> gets[a];

gets(a);

ですよね?
    • good
    • 0
この回答へのお礼

ありがとうございます。(恥。。。)

お礼日時:2002/08/17 03:11

> for(i=0;i>=9;i++){


      ~~~~
煮詰まったら一腹して頭をスッキリさせるのが良いかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。(恥。。。)

お礼日時:2002/08/17 03:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!