文字列を他の多くのデータとともにバイナリファイルに保存したいのですが、以下のコードを使用しています(実際に使用すると、文字列はmallocされます)ファイルに書き込むことができます。私はそれを16進エディタで見ました。nullターミネータを正しく書いているかどうかはわかりません(または必要な場合)。読み返すと、保存したのと同じ文字列の長さが得られますが、文字列ではありません。私は何を間違っていますか?
FILE *fp = fopen("mybinfile.ttt", "wb");
char drumCString[6] = "Hello\0";
printf("%s\n", drumCString);
//the string length + 1 for the null terminator
unsigned short sizeOfString = strlen(drumCString) + 1;
fwrite(&sizeOfString, sizeof(unsigned short), 1, fp);
//write the string
fwrite(drumCString, sizeof(char), sizeOfString, fp);
fclose(fp);
fp = fopen("mybinfile.ttt", "rb");
unsigned short stringLength = 0;
fread(&stringLength, sizeof(unsigned short), 1, fp);
char *drumReadString = malloc(sizeof(char) * stringLength);
int count = fread(&drumReadString, sizeof(char), stringLength, fp);
//CRASH POINT
printf("%s\n", drumReadString);
fclose(fp);