30.改变学生结构体数组中的值
2015-06-22 14:44
507 查看
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文文件中。函数fun的功能是重写形参filename所指文件中最后的一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define N 5 typedef struct student { long sno; char name[10]; float score[3]; }STU; void fun(char *filename, STU n) { FILE *fp; fp = fopen(filename, "rb+"); fseek(fp, -1L*(long)sizeof(STU), 2); fwrite(&n, sizeof(STU), 1, fp); fclose(fp); } int main() { STU t = { {1001,"MaoChao",91,92,77}, {10002,"CaoKai",75,76,88}, {10003,"LiSi",85,70,78}, {10004,"FangFang",90,82,87}, {10005,"ZhangSi",95,80,88} },ss ; STU n = { 10006,"ZhaoSan",55,70,68 }; int i, j; FILE *fp; fp = fopen("student,dat", "wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); printf("\nThe original data :\n\n "); for (j = 0;j < N;j++) { printf("\nNo: %ld Name :%-8s Score: ", t[j].sno, t[j].name); for (i = 0;i < 3;i++) printf("%6.2f",t[j].score[i]); printf("\n"); } fun("student.dat", n); printf("\nThe data after modifing :\n\n"); fp = fopen("student.dat", "rb+"); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j = 0;j < N;j++) { printf("\nNo:%ld Name:%-8s Score:", ss[j].sno, ss[j].name); for (i = 0;i < 3;i++) printf("%6.2f", ss[j].score[i]); printf("\n"); } getchar(); return 0; }
相关文章推荐
- mysql更新表中日期字段时间
- LeetCode | Divide Two Integers
- zebra/quagga ospf and unh test section 3
- HDU---1114-Piggy-Bank (背包)
- LoaderManager使用详解(四)---实例:AppListLoader
- 单例模式
- zebra/quagga ospf and unh test section 2
- cordova学习二:图标与启动屏幕设置
- [Swust OJ 797]--Palindromic Squares(回文数水题)
- Scala的模式匹配和条件类
- 世事无常
- 根据进程名称获取进程pid,结束进程,执行exe文件
- 大数据透视《西游记》之妖怪分布
- 2015-第16周项目1-平方根中的异常
- 插入排序(直接插入+希尔排序)
- zebra/qugga ospf implemention 1
- 黑马程序员----开始写Blog
- 华为-on演习--身高找到最好的二人
- roatae array
- 数据论《西游记》关系网:猪八戒最主动喜欢别人