为什么使用fread函数第一个指针型参数不能是stdout?

当调用fread函数时第一个参数为stdout运行会出错

#include<stdio.h>
#include<string.h>
//binary二进制
typedef struct
{
int number;
char name[10];
char gender[5];//一个汉字最多4个字节
//刚刚查了一下好像是关于什么16*16点阵的,大概就是清晰度啥的吧??
//但老觉得不太对
int age;
} Student;

int main()
{
//建立s
Student s;
s.number=1001;
strcpy(s.name,"smith");
strcpy(s.gender,"M");
s.age=18;
//写文件
FILE *fp;
fp=fopen("student.dat","wb"); //wb表示二进制写,覆盖上次的内容

fwrite(&s,sizeof(Student),1,fp); 
fclose(fp); 

//读文件 
Student stu;
fp=fopen("student.dat","rb");  

// fread(&stu,sizeof(Student),1,fp);
fread(stdout,sizeof(Student),1,fp);//为什么这样不行?

/* printf("\n学号:%d;姓名:%s;性别:%s;年龄:%d\n",
stu.number,stu.name,stu.gender,stu.age); */
fclose(fp);

return 0; 

}

运行结果:直接运行结束,就有个黑框
因为stdout要读到\n才会输出到屏幕上,所以在strcpy(s.name,"smith后尝试加过\n但并没有任何作用
我希望能知道原因