No obtener todos los caracteres después de leer el archivo

#include #include int main() { int count=0; char c=0; printf("Reading this Source file\nFile name is: %s\n",__FILE__); FILE *myFile=fopen(__FILE__,"r"); if(myFile) printf("File Successfully Opened\n"); do{ c=fgetc(myFile); count++; } while(c!=EOF); printf("%s contains %d characters\n",__FILE__,count); char *p=(char*)malloc(count+1); if(p==NULL) printf("Malloc Fail\n"); else { fseek(myFile,0,SEEK_SET); printf("\nMalloc succeeded - You have %d Bytes of Memory\n",count+1); fgets(p,count,myFile); printf("The Entire Source Code is\n---------------------------\n"); int i=0; while(i<count) printf("%c",*(p+i++)); } free(p); fclose(myFile); return 0; } 

En el progtwig anterior sigo recibiendo solo hasta los siguientes caracteres:

 #include 

Esa es mi salida es:

 Reading this Source file File name is: main.c File Successfully Opened main.c contains 704 characters Malloc succeeded - You have 705 Bytes of Memory The Entire Source Code is #include 

¿Por qué no se muestra todo el contenido del archivo en la salida?

Porque fgets detiene en nueva línea.

 fgets(p,count,myFile); /* Stops when it reaches `count` OR at newline. */ 

EDITAR

Use fread en fread lugar o use el primer bucle (el que tiene fgetc ) para almacenar los caracteres y expandir p medida que fgetc .