#include <stdio.h> #include <time.h> #include <stdlib.h> /* Strucuture de l'header */ typedef struct { unsigned short VersionHi; unsigned short VersionLo; unsigned short dummy; unsigned short StructLen; } HistoricalHeader_t; /* Structure d'un champ de données */ typedef struct { time_t LogTime; unsigned short Msec; unsigned short IntraSecCounter; unsigned int InitValue:1; unsigned int TagId:31; float Value; } HistoricalRecord_t; /* Header */ HistoricalHeader_t Header; /* Données */ HistoricalRecord_t HstBuffer[100000]; char Buffer[1600000]; long FileSize(FILE *Stream) { long CurPos, Length; CurPos = ftell(Stream); fseek(Stream, 0L, SEEK_END); Length = ftell(Stream); fseek(Stream, CurPos, SEEK_SET); return Length; } int ReadFile(char *FileName) { FILE *In; long Len; if ((In fopen(FileName, "rb")) NULL) { fprintf(stderr, "Cannot open input file.\n"); return 1; } Len = FileSize(In)-8; Len /= sizeof(HistoricalRecord_t); fread(&Header, 8, 1, In); swab((char*)&Header, (char*)&Header, 8); fseek(In, 8L, SEEK_SET); fread(Buffer, sizeof(HistoricalRecord_t), Len, In); fclose(In); return 0; } int main() { ReadFile("toto"); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvoid custom_swab(const char *from, char *to, size_t size) { char tmp; int i; for (i = 0; i < size; i += 2) { tmp = from[i]; to[i] = from[i + 1]; to[i + 1] = tmp; } }