Leyendo archivos binarios en C

Supongamos que se escribe un archivo binario (que debe abrirse para su lectura) con este prototipo de función:

void writeBinaryFile ( char *fileName , char *comment , int numberOfDoubles , double *doubles , int numberOfInts , int *ints ) 

(Más detalles sobre esta función se pueden encontrar en la siguiente pegada)

Mi código escrito solo adquiere la PRIMERA letra del archivo .bin …

Aquí está mi función:

 void readBinaryFile(char *fileName) { FILE *fp; char *ptr; double *ptr1; int *ptr2; ptr=(char*)malloc(sizeof(char)*5); ptr1=(double*)malloc(sizeof(double)*6); ptr2=(int*)malloc(sizeof(int)*6); fp=fopen ( fileName , "rb" ) ; fread(ptr,sizeof(char),11,fp); while(*ptr!='\0') { printf("%c",*ptr); ptr++; } fclose(fp); } 

¿Que me estoy perdiendo aqui? Necesito leer más que el primer carácter en el archivo .bin.

La ayuda es apreciada, como siempre. ¡Gracias!

En el caso de que alguien necesite el código completo de manera organizada, aquí está el pegado:

http://pastebin.com/66jZwfUD

 void readBinaryFile(char *fileName) { FILE *fp; char *ptr; double *ptr1; int *ptr2; ptr=(char*)malloc(sizeof(char)*5); ptr1=(double*)malloc(sizeof(double)*6); ptr2=(int*)malloc(sizeof(int)*6); 

No lance el valor de retorno de malloc en C. Oculta errores.

  fp=fopen ( fileName , "rb" ) ; 

Necesitas verificar errores aquí.

  fread(ptr,sizeof(char),11,fp); 

Usted asignó 5 bytes para ptr , ahora está leyendo 11. También debe verificar el valor de retorno de fread .

  while(*ptr!='\0') { printf("%c",*ptr); ptr++; } 

No hay nada que impida que este bucle se ejecute al final del espacio asignado.

  fclose(fp); } 

Ahora, toda la memoria que asignó se pierde y todos los datos que leen se pierden, ya que los punteros quedan fuera del scope cuando regresa.