parseaux.h ========== #ifndef PARSEAUX_H_INCLUDED #define PARSEAUX_H_INCLUDED char *read_string(char **pptr); unsigned short read_ushort(char **ptr); unsigned char read_uchar(char **ptr); int read_uchar(char **ptr); #endif parseaux.c ========== #include #include #include "parseaux.h" char *read_string(char **pptr) { char *ptr = *pptr; unsigned char slen = 0; // Read string length slen = *((unsigned char *) ptr); ptr += sizeof(unsigned char); // Read string data char *str = (char *) malloc(slen + 1); memcpy(str, ptr, slen); str[slen] = '\0'; // Move pointer ahead *pptr = ptr; } unsigned short read_ushort(char **ptr) { unsigned short dummy = *((unsigned short *) (*ptr)); (*ptr) += sizeof(unsigned short); return dummy; } unsigned char read_uchar(char **ptr) { unsigned char dummy = *((unsigned char *) (*ptr)); (*ptr) += sizeof(unsigned char); return dummy; } int read_uchar(char **ptr) { int dummy = *((int *) (*ptr)); (*ptr) += sizeof(int); return dummy; }