文件流问题``
有5个学生,每个学生有学号,姓名和某门课的成绩等三项信息。从键盘上输入学生的信息,把这些学生的信息按照程序从高到低写到一个名为“test”的磁盘文件中
下面是我写的程序,但是运行后没能显示test里面的内容``后面我查看了磁盘中的test 里面都是写乱码,为什么啊`??? 我最大的问题是怎么把结构体写入磁盘中``大家帮忙看下吧 程序看起来虽然有点长,不过都是写重复的东东``
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 2
struct student
{
char num[50];
char name[50];
float mark;
}stu[MAX];
void main()
{
void sort(struct student *stu);
void putout(struct student *stu);
int i;
for(i=0;i<MAX;i++)
{
scanf("%s %s %f",stu[i].num,stu[i].name,&stu[i].mark);
}
sort(stu);
putout(stu);
// 放到指定的文件中```
FILE *fp;
if((fp=fopen("test.txt","w"))==NULL) //这里用w对吧 要不要用w+或是其他的啊
{
printf("you can not open the file ~!!");
exit(0);
}
if((fwrite(&stu[i],sizeof(struct student),1,fp))!=1) // 这里有点不解,=1是什么意思啊??
{
printf("error"); // 使用fwrite能将结构体写入吗??
exit(0);
}
fclose(fp);
// 读出文件内内容-------------------------------------
if((fp=fopen("test.txt","r"))==NULL)
{
printf("you can not open the file ~!!");
exit(0);
}
if (fread(&stu[i],sizeof(struct student),1,fp)!=1)
{
printf("error!");
exit(0);
}
fclose(fp);
}
void sort(struct student *stu)
{
int i,j;
struct student temp;
for(i=0;i<MAX-1;i++)
{
for(j=i+1;j<MAX;j++)
{
if(stu[i].mark<stu[j].mark)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
}
void putout(struct student *stu)
{
int i;
for(i=0;i<MAX;i++)
{
printf("%s %s %f\n",stu[i].num,stu[i].name,stu[i].mark);
}
}