Binaerdatei fopen

Ich habe da ein Problem bei dem mir so langsam die Ideen ausgehen…

Folgendes:
ich habe eine Datei die mit less (ein linux text viewer) betrachtet so aussieht:
ÿÿÿ^@^@^@ÿÿÿ^@^@^@ÿÿÿ^@^@^@ÿÿÿ^@^@^@ÿÿÿ^@^@^@

Mit hexdump so:
0000000 ffff 00ff 0000 ffff 00ff 0000 ffff 00ff
0000010 0000 ffff 00ff 0000 ffff 00ff 0000
000001e

Wie kann ich die jetzt einlesen, dass ich mit diesen werten arbeiten kann???
es sollen immer 2er packete gelesen werden, also soll bei ff 255 rauskommen und bei 00 halt 0.

hab schon mit getc und fread versucht, aber ohne erfolg…
bei getc bekomme ich nur einsen und wenn ichs mit fread versuche dann hab ich unendlich 100% prozessorauslastung…

ich hoffe dass mir einer helfen kann!

Danke

Bild mal den Quelltext ab mit dem Du das einliest.
Dann lässt sich mehr zu sagen
Viele Grüße

Micha

So ungefaer, hab jetzt mal son paar sachen weggelassen…
Hab viel ausprobiert, deswegen sind da manchmal etwas komische sachen…(variabeln)…

#include
#include

int main(void){

FILE *RAWFILE;
int data,i,hmm;
char test[2];
unsigned char *binptr;

RAWFILE = fopen(„test.raw“,„rb“);

i = 0;
while (hmm = getc(RAWFILE) != EOF)
{
printf("%d", hmm);
i++;
}

/*
while (!feof(RAWFILE));
{
data = fread(binptr, 1, 1, RAWFILE);
printf(„i=%d\n“,data);
}
*/

fclose(RAWFILE);

Hallo David

So ungefaer, hab jetzt mal son paar sachen weggelassen…
Hab viel ausprobiert, deswegen sind da manchmal etwas komische
sachen…(variabeln)…

#include
#include

int main(void){

FILE *RAWFILE;
int data,i,hmm;
char test[2];
unsigned char *binptr;

unsigned char binptr[1];

RAWFILE = fopen(„test.raw“,„rb“);

i = 0;

while ((hmm = getc(RAWFILE))!= EOF)
Der Compiler macht sonst
hmm = (getc(RAWFILE) != EOF);
hmm wird immer „0“ (FALSE) oder „1“ (TRUE)

{
printf("%d", hmm);
i++;
}

/*
while (!feof(RAWFILE));
{
data = fread(binptr, 1, 1, RAWFILE);

data = fread( binptr , 1, 1, RAWFILE);
data enthält die Anzahl gelesener Bytes, also immer 1 in deinem Fall, auser wenn das Datei-Ende erreicht worden ist, dann währe es 0, aber das wird ja mit !feof() verhindert. Die gelesenen Daten werden in demjenigen Speicherbereich auf den binptr zeigt abgelegt.

printf(„i=%d\n“,data);

printf(„i=%d\n“,binptr[0]);

}
*/

fclose(RAWFILE);

MfG Peter(TOO)

MfG Peter(TOO)

Aha!!! Jetzt verstehe ich das auch!

Vielen dank fuer deine super erklaerung!!!

greetz

david