c语言文件小疑点,求教大神啊

c语言文件小问题,求教大神啊!!
我编了几个有关文件的程序,发现每次键入的内容下次再运行程序时都没有了,我不知道是不是和键入数据的方式有关还是和打开文件的方式有关。
fwrite(&stdu[i],sizeof(Student_type),1,fp) 和 fprintf(fp,"%d",&stdu[i]) 输入的数据保存方式有什么不同吗?


------解决方案--------------------
推荐使用WinHex软件查看文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

------解决方案--------------------
个人理解,仅供参考:
fprintf("%d",...);——这个是用将整数写文件;
fwrite(...);——这个是以字符串形式一个一个字节写文件;
你需要了解“字节序”。
字节序 经典例子:
union TType
{
int a;
struct TChar
{
char b1;
char b2;
char b3;
char b4;
}b;
};
TType test=0x01020304;
printf("%d\n",test.a); ————类似于fprintf,将整个输出
printf("%d\t%d\t%d\t%d\n",test.b1,test.b2,test.b3,test.b4);——类似于fwrite,一个一个字节处理。