This is a pathetically sad thing about windows. Each line in a text file actually ends with \r\n. But that is translated to just \n when it's read in text mode. So you will have one extra byte per line.
The fact that you're malloc'ing a few extra bytes is not a big problem. The problem is with properly terminating the buffer. To do so you could use the return value of fread.
Code:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char* fbuffer;
FILE* f;
long s;
size_t st;
f = fopen("atextfile.txt", "r");
fseek(f, 0, SEEK_END);
s = ftell(f);
fbuffer = malloc(s + 1);
rewind(f);
st = fread(fbuffer, 1, s, f);
fbuffer[st] = 0;
fclose(f);
printf("s=%ld\nst=%u\nText:\n%s", s, st, fbuffer);
return 0;
}