Ciao, anch'io ho provato il tuo codice, ma con un compilatore Borland, e la fread() mi restituisce un numero di caratteri, o meglio di "items", inferiore al numero effettivo aprendo il file in modalità "text", ma il numero risulta corretto se lo si apre in modalità "binary".
codice:
#include <stdio.h>
#include <malloc.h>
#include <mem.h>
int main()
{
FILE *fstream;
int dim_file, x, items;
char *my_buffer;
fstream = fopen("prova.txt","rb");
if(fstream==NULL)
{
printf("Errore in apertura del file.\n");
return -1;
}
printf("File aperto correttamente.\n");
fseek(fstream, 0, SEEK_END);
dim_file = ftell(fstream);
rewind(fstream);
my_buffer = (char *) malloc((sizeof(char)*dim_file)+1);
items = fread(my_buffer, sizeof(char), dim_file, fstream);
printf("dimen file = %d\n", dim_file);
printf("items read = %d\n", items);
if( items < dim_file)
printf("Errore nella lettura del file.\n");
else
printf("File letto correttamente.\n");
my_buffer[dim_file] = 0;
printf("La stringa %c:\n\"%s\"\n", 138, my_buffer);
fclose(fstream);
free(my_buffer);
getchar();
return 0;
}