Daten aus Datei lesen, dann interpretieren
-
Hallo Leute,
also ich bin mir sicher, dass dies eines der häufigst gestellten Fragen ist
...
Aber ich habe keine passende Antwort auf mein Problem gefunden. So wende ich mir hier an die C-Experten und Bedanke mich für eure Hilfe.Folgendes Problem:
Die Struktur:
typedef struct{
char test[7];
unsigned short int nNumberValues;
unsigned short int nNumberDelayValues;
unsigned short int nRatio;
unsigned short int nRatioCounter;
unsigned short int nTraceModuleNumber;
unsigned short int nTriggerCounter;
double flBasicSamplingTime;
unsigned short int nTimeStamp1;
unsigned short int nTimeStamp2;
unsigned short int nTimeStamp3;
char bTrigger;
char bTriggerRatio;
char bCpyFlag;
}structMist;Meine Definitionen:
char testRead[sizeof(structTrace)];
float *CompleteBuffer;
structTrace *Header_Info;
structMist *Mist;
char Header_Info2[48];
int BufferLength;
structTime *Time;
FILE *binFile, *ascFile;Hier der Problemteil:
fread(testRead, sizeof(char),48, binFile );
memcpy(Header_Info,testRead, sizeof(structTrace));
memcpy(Mist,testRead, sizeof(structTrace));
printf("Sodele hier kommt mal die Anzahl der Nummern: %d und %d\n", Mist->nNumberValues, (int)(testRead[8]+testRead[9]);Meine Frage:
Also ich lese n-Character aus einer Datei. Übertrage ich diese Daten in eine Struktur dann steht die richtige Nummernanzahl da. Versuche ich nun die Character ab der struct[8] und [9] von Hand als int zu interpretieren versagt das ganze und ich bekomme die Nummer nicht.Wie erzeuge ich z.B. aus den Positionen testRead[8] und testRead[9] den richtigen Integer wert.
Worin liegt der Unterschied zur Struktur?Danke und Grüßle aus dem sonnigen Bayern
Christoph
-
Müsste das
char testRead[sizeof(structTrace)];
nicht das heisen?
char testRead[sizeof(structMist)];
2. Brauchst "testRead nicht ,direkt mit struktur"
struct structMist Temp; fread((char*)&tTemp, sizeof(structMist),1, binFile );
ich nehme an du willst 48 datenblöcke der entsprechenden struktur laden?? dann so: (48 stück);
struct structMist Temp[48]; fread((char*)&tTemp, sizeof(structMist),48, binFile );
so werden die binärdaten direkt in deine struktur(en) gemappt.
Wie erzeuge ich z.B. aus den Positionen testRead[8] und testRead[9] den richtigen Integer wert.
Wenn du es aber mit testRead machen willst, kommst du so an die daten (was aber umständlich ist):
short int var =*((short int*) &testRead+8);