Это просто проблема выделения памяти.
char *fd = "myfile.txt";
struct stat *buf;
stat(fd, buf);
int size = buf->st_size;
printf("%d",size);
Приведенный выше код объявляет только указатель, но в действительности не выделяется место в памяти.
Вы должны изменить код так, чтобы он выглядел так:
char *fd = "myfile.txt";
struct stat *buf;
buf = malloc(sizeof(struct stat));
stat(fd, buf);
int size = buf->st_size;
printf("%d",size);
free(buf);
Это выделит память и освободит ее после использования.