2016-10-20 3 views
-2

私はそれが最後までnバイトで読み取ることを意味、バイト全ての画像どのようにブロックごとに画像ファイルを読むことができますか?

FILE *stream ; 

FILE *stream1; 

stream= fopen(pFile, "rb"); 

//when stream still bytes in stream 

do 

{ 

numread = fread(stream1, sizeof(char), 64, stream); 

//treat the stream1 

} 
+0

ないあなたが実際に求めたが、おそらくされているかわからをファイルのサイズを調べる必要があります(例えば 'fseek'を使うなど)、' malloc'を使ってこのサイズのメモリブロックを割り当てる必要があります。そしてそのファイルをそのメモリブロックに読み込む必要があります。 \t ところで、あなたはストリームを開いて、それからあなたはstream1からこれを読みませんか? –

+0

どのようにブロックnバイトからすべてを読み取ることができますか?どのように私はブロックから読むことができますか?たとえば、65 ... 128 ...の後にブロック0の最後の0 ... 64を読み込みます。 –

+0

stream1はFILE *ではなく、あなたのバッファ(char *)です。 (64 * sizeof(char))バイトを割り当てる必要があります。 whileループで 'stream1を扱う'ことができれば、複数のブロックにデータを格納する必要はありません。 –

答えて

0

あなたは基本的にこの必要c。でなく、上限で読み取った画像を希望:

FILE *stream1; 

stream1 = fopen(pFile, "rb"); 

if (stream1 == NULL) 
{ 
    printf("Failed to open file"); 
    return 1; 
} 

int numread; 

do 
{ 
    char buffer[64]; 
    numread = fread(buffer, sizeof(char), 64, stream1); 

    // now buffer contains the 'numbytes' bytes you have read 

} while (!feof(stream1)): 
+0

ありがとうございます...このコードはファイルのEOFを検出しますか? –

+0

@yag_md実際にnumreadが0のとき、私はEOFに遭遇したと仮定しました。私は答えを修正しましたが、前の 'fread'がファイルの終わりに遭遇した場合にTRUEを返す' feof'関数を使用しています。 –

+0

私はイメージに262 144バイトが含まれていることを意味します。262 144/64 = 4,096 –

関連する問題