Frage zu fread (matlab -> c++)

Guten Tag,
ich möchte gerne ein c+±Programm schreiben welches ich schon mit dem Matlab-Code implementiert habe. Aber schon am Anfang habe ich riesige Schwierigkeiten (die auch leider daher kommen da ich C++ einfach nicht beherrsche):

%%Matlab-Code
fid=fopen(’~/workspace/Testcplusplus/test.feats’,‚r‘,‚b‘);
if fid
int main () {
char block[BLOCKSIZE];
FILE *infile;
infile = fopen(filename, „rb“);
int nbytes;
nbytes = fread(block, BLOCKSIZE, sizeof(long), infile);
printf(„Länge: %i“, nbytes);
// ?? Hier wollte ich gerne den Inhalt auslesen
fclose(infile);
return 0;
}
//----------------------------------------------------------------------------

Ich habe mit mehrere Methoden aus dem Netz experimentiert aber ich kriege leider nicht das heraus was ich haben will :frowning:
(Im Debug-Modus ist leider der Buffer leer)
Wäre toll wenn jemand rüberfliegen könnte um mich aufzuklären wo mein Knoten im Kopf ist :wink: Danke

Howdy,

%%Matlab-Code
fid=fopen(’~/workspace/Testcplusplus/test.feats’,‚r‘,‚b‘);
if fid

{
long L = 0;
int nItemsNo = fread((void*) &L, sizeof(L), 1, infile);
printf(„rc=%d value=%ld\n“,nItemsNo,L);
}

Als Resultat rc bekommst du 1, falls erfolgreich ein long gelesen wurde und 0, wenn kein Wert gelesen werden konnte (Gruende: siehe man page zu fread)

Falls die Grössen nicht übereinstimmen, dann musst du in C den Datentyp für L verwenden, der die gleiche Grösse hat, wie in Matlab und ggf. den Formatstring im printf anpassen.

Falls die Byteorder nicht stimmt, musst du die Daten noch reorganisieren.

Gruss
norsemanna