2016-10-20 4 views
-2

ich würde in c lesen Bild mögen, aber in Limit Byte es von n Bytes bis zum Ende alle BildWie kann ich Bilddatei in c für Block lesen?

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

nicht sicher, was Sie eigentlich fragen, aber wahrscheinlich Sie müssen die Größe der Datei herausfinden (zum Beispiel mit 'fseek'), dann müssen Sie einen Speicherblock genau dieser Größe mit' malloc' zuweisen, und dann müssen Sie die Datei in diesen Speicherblock lesen. \t BTW: Sie öffnen Stream und dann lesen Sie aus Stream1 ist dies ein Tippfehler? –

+0

Wie kann ich aus dem Block n Bytes nicht alle lesen? Wie kann ich aus einem Block lesen? zum Beispiel lesen Sie 0 ... 64 nach 65 ... 128 ... bis Ende des Blocks –

+0

stream1 ist keine Datei *, es ist Ihr Puffer (char *). aber bevor Sie zuweisen müssen (64 * sizeof (char)) Bytes. Wenn Sie den Stream1 in der while-Schleife behandeln können, müssen Sie keine Daten in mehreren Blöcken speichern. –

Antwort

0

Sie im Grunde diese benötigen lesen bedeutet:

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

danke ... dieser Code wird die EOF der Datei erkannt? –

+0

@yag_md tatsächlich, wenn numread ist 0 Ich nahm an, dass EOF angetroffen wurde. Ich habe die Antwort modifiziert und jetzt benutze ich die Funktion 'feof', die TRUE zurückgibt, wenn das vorherige' fread' das Ende der Datei gefunden hat. –

+0

ich habe ein Bild enthält 262 144 Bytes es bedeutet 262 144/64 = 4.096 –

Verwandte Themen