title: C: Writing and Reading a string to and from a binary file
body: <p>I want to store strings in a binary file, along with a lot of other data, im using the code below (when i use it for real the strings will be malloc'd) I can write to the file. Ive looked at it in a hex editor. Im not sure im writing the null terminator correctly (or if i need to). when i read back out i get the same string length that i stored, but not the string. what am i doing wrong?</p>
  
  <pre><code>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(&amp;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(&amp;stringLength, sizeof(unsigned short), 1, fp);
  
  char *drumReadString = malloc(sizeof(char) * stringLength);
  int count = fread(&amp;drumReadString, sizeof(char), stringLength, fp);
  
  //CRASH POINT
  printf("%s\n", drumReadString);
  
  fclose(fp); 
  </code></pre>