求大神帮忙调试一下代码
#include <stdio.h>#include <stdlib.h>
struct structstudent//建立学生这个结构体
{
int No;//学号
char Name;//姓名
int Age;//年龄
}student[3];//三个学生
void saveFile()//给文件写入文字
{
int i;//定义一个循环变量
FILE *fp;//文件指针
if((fp=fopen("d:\\stu.txt","w"))==NULL)//若文件指针为空指针,则输出“无法打开文件”并退出
{
puts("can not open file");
exit(1);
}
for(i=0;i<3;i++)
{
fwrite(&student[i],sizeof(struct structstudent),1,fp);
if(ferror(fp)!=0)//ferror返回值不为0,则输出“写入错误”,清除错误,关闭文件并退出
{
perror("write file error");
clearerr(fp);
fclose(fp);
exit(2);
}
}
}
void printFile()//读一个文件
{
int i=0;//定义循环变量i
FILE *fp;//文件指针
struct structstudent *sp;//结构体指针
if((fp=fopen("d:\\stu.txt","r"))==NULL)//文件指针为空,则输出“无法打开文件”并退出
{
puts("can not open file");
exit(1);
}
printf("studentNo,Name,Age\n");//打印“studentNo,Name,Age\n”
sp=&student[0];//结构体指针指向数组第一个元素
for (;i<3;i++,sp++)//遍历数组并关闭文件
{
if(fread(sp,sizeof(struct structstudent),1,fp)==NULL)
{
printf("%d\t%s\t%d\n",sp->No,sp->Name,sp->Age);
}
}
fclose(fp);
}
void main()//输入学号,姓名,年龄,写入文件并读取
{
int i;
puts("please input student's No,Name,Age:");
for(i=0;i<3;i++)
{
scanf("%d%s%d",&student[i].No,student[i].Name,&student[i].Age);
saveFile();
printf("===student info===\n");
printFile();
}
}