Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Hilfe gesucht: Daten aus einer Datei lesen - in C

Hilfe gesucht: Daten aus einer Datei lesen - in C

andreas_g
andreas_g10.01.1209:58
Liebe MTN Community,

trotz Suche im Internet, habe ich bisher nicht so recht herausfinden können, wie ich folgende Aufgabe lösen könnte:

Ich möchte einen definierten Abschnitt einer Datei in ein Array schreiben und habe folgende Informationen zur Verfügung:

- Die Datei ist ein "rohes" Abbild eines Speichermediums, unterteilt in Blöcke zu je 512 Byte
- Bekannt sind: Nummer des Blocks, bei dem der Lesevorgang begonnen werden soll, Anzahl der Blöcke, die gelesen werden sollen
- Das Array, in das die Daten geschrieben werden sollen, besteht aus Elementen zu je 1 Byte

Das ganze sollte in C geschrieben werden.

Soweit bin ich:

#define MAX_BUFFER_SIZE 65536
Uint8 buffer[MAX_BUFFER_SIZE];

FILE* diskimage;

void read_image(void);
void read_image(void) {
diskimage = fopen("./image.raw","r"); 
}



Danke für alle Tipps!

Andreas
0

Kommentare

Marcel Bresink10.01.1210:22
#include <stdio.h>
#define BLOCKSIZE 512

void readImage(const char *path, unsigned int startBlock, unsigned int blockCount)
{
    unsigned char    *buffer;
    size_t        size;
    FILE        *diskImage;

    size = (size_t)(blockCount * BLOCKSIZE);
    buffer = (unsigned char *)malloc(size);
    diskImage = fopen(path, "r");
    fseek(diskImage, (long)(startBlock * BLOCKSIZE), SEEK_SET);
    fread(buffer, size, 1, diskImage);
    fclose(diskImage);

    // Array buffer[] kann benutzt werden.

    free(buffer);
}

Es fehlt allerdings jegliche Fehlerbehandlung und Berücksichtigung von 32- oder 64-Bit-Umgebungen.
0
andreas_g
andreas_g10.01.1211:56
Vielen Dank!
Das werde ich heute abend testen.
0
andreas_g
andreas_g10.01.1221:36
Konnte den Code erfolgreich einsetzen! Nochmals vielen Dank!
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.