C文件编程分析第二关

程序功能:文件studat中存放了十名学生的数据(包括学号num,姓名name,年龄age。),
要求读出第1,3,5,7,9名学生的数据,显示这些数据,并计算这5名学生的平均年龄
主要知识:fseek函数定位,使用fread函数读出学生数据
#include<stdio.h>

#include<stdio.h>
#include<stdlib.h>
struct stu_type
	{	int num;char name[10];int age;
	 } stud[10];
main()
{	FILE *fp;int i,s=0;float aver;
	if((fp=fopen("studat.xls","rb"))==NULL)
	{	printf("不能打开文件\n");
		exit(0);
	}
	for(i=0;i<9;i+=2)
	{	fseek(fp,i*sizeof(struct stu_type),SEEK_SET);
		fread(&stud[i],sizeof(struct stu_type),1,fp);
		printf("%d,%s,%d\n",stud[i].num,stud[i].name,stud[i].age);
		s+=stud[i].age;
		aver=s/5.0;
		printf("%f\n",aver); 
	}
 }

在这里插入图片描述
在这里插入图片描述
文件在桌面,可结果是不尽人意,为什么?
怎么解决这个问题?
我的问题是什么?
(欢迎留言提供反馈意见哦)
②fseek(fp,isizeof(struct stu_type),SEEK_SET);
起始点是?SEEK_SET,文件的尾部
位移量是?i
18
文件指针指向谁?fp文件位置指针所指向的文件studat.xls,具体的位置如何确定?即把文件位置指针从尾部向右移动i*18个字节。
③ fread(&stud[i],sizeof(struct stu_type),1,fp);
指针是(地址是)?在fread函数中,表示存放输入数据的首地址,即&stud[i]
数据块的字节数是?sizeof(struct stu_type),即18个
要读写的数据块数是?1
文件指针是?FILE *fp

猜你喜欢

转载自blog.csdn.net/YJG7D314/article/details/89041361
今日推荐