首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
程序通过定义学生结构体变量, 存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序
程序通过定义学生结构体变量, 存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。 请在程序
admin
2017-09-23
52
问题
程序通过定义学生结构体变量,
存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
试题程序:
#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 (
【1】
, "rb + ");
fseek (
【2】
, 一 (long) sizeof
(STU) , SEEK_END) ;
/*********found*********/
fwrite (&n, sizeof (STU) , 1,
【3】
) ;
fclose (fp) ;
}
main ()
{ STU t[N] = { {10001,"MaChao",91, 92, 77 }, {10002," CaoKai",75, 60, 88 },
{10003, " LiSi", 85,70, 78}, {10004,"FangFang", 90,82, 87},
{10005, " ZhangSan ",95, 80, 88} };
STU n = {10006, "ZhaoSi", 55, 70,
int i,j; FILE * fp;
fp = fopen("student.dat","wb");
fwrite (t, sizeof (STU) , N, fp) ;
fclose ( fp) ;
fp = fopen ("student.dat", "rb");
fread (ss, sizeof (STU) , N, fp) ;
fclose ( fp);
printf ("\nThe original data :\n\n") ;
{ printf ("\nNo: %ld Name: % 一8s
scores: ",ss[j ] .sno, ss[j] .name) ;
printf ("% 6.2f ", ss[j] .score
) ;
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) ;
{ printf("\nNo: % ld Name: % 一8s
Scores: ",ss[j ] .sno, ss[ j ] .name) ;
printf ("% 6.2f ", ss[ j ] .score
) ;
printf ("\n") ;
}
}
选项
答案
(1)filename (2)fp (3)fp
解析
填空1:本空是对文本文件的打开,filename所指的文件中的最后数据要进行重写,因此首先是要打开,因而本空填写filename。
填空2:fseek功能是重定位流上的文件指针。
用法:intfseek( FILE *stream, long offset, int fromwhere);本空应该填写fp。
填空3:因为题目中要对所有学生数据均以二进制方式输出到文件中,因此本空填写fp。
知识点讲解:
函数名:fseek
功能:重定位流上的文件指针。
用法:int fseek(FILE *stream,long offset,intfromwhere)。
描述:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准(从文件的哪里开始偏移)、偏移offset个字节的位置。正数表示正向偏移,负数表示负向偏移。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值:成功,返回0;否则返回非0值。
转载请注明原文地址:https://kaotiyun.com/show/3zxp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
若定义函数int*func(),则函数func的返回值为()。
定义如下变量和数组:inti,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是()。for(i=0;i<3;i++)printf("%d",x[i][2-i]);
执行程序时的输入为123456789,则程序的运行结果为()。#include"stdio.h"main(){inta,b;scanf("%2d%*2d%1d",&a,&B);printf("%d\n",
若x=2,y=3,则x&y的结果是()。
有以下程序:#include<stdio.h>intfun(int*k){intb=0;b=*k+b:return(B);}main(){inta[10]={1,2,3,4,5,6,7,8},i
已知下列函数定义:fun(int%,intc,intn,intdatA){intk;for(k=0;k<m*n;k++){*b=data;b++;}}则调用此函数的正确写法是(假设变量a的说明为int
若有以下定义,则对a数组元素的正确引用是()。inta[5],*p=a;
阅读以下程序#include<stdio.h>main(){IntCase;floatprintF;printf("请输入2个数:");scanf("%d%f",&Case,&printF);print
函数rewind(fp))的作用是()。
随机试题
A.止泻药B.接触性泻药C.利胆药D.润滑性泻药E.容积性泻药地芬诺酯
男性,4个月,体重5k。腹泻3天,每日7~8次,蛋花汤样、无腥臭,喂奶后呕吐2次。面色稍苍白,上腭裂,精神较差,皮肤稍干燥,眼窝、前囟凹陷,皮下脂肪0.3cm,皮肤弹性较差,哭有泪。四肢末梢较冷,血清钠128mmol/L。当患儿痊愈出院时,对家长可作以
关于投标保证金的退还通常考虑的因素,下列描述正确的有()。
背景资料:某电力建设公司承接2×1000MW电厂建设工程的总承包任务。考虑工期和专业特长的要求,辅助工程采用分包的方式组织建设。在工程建设中发生如下事件:事件一:在发电机转子安装时,施工单位进行了发电机转子安装前单独气密性试验,在试验压
案例一背景:某一级资质装饰施工队承接了一大厦南面石材及北面玻璃幕墙的安装工作。在进行石材幕墙施工中,由于硅酮耐候密封胶库存不够,操作人员为了不延误工期及时采用了不同于硅酮结构胶的另一品牌,事后提供了强度试验报告,证明其性能指标满足了承载力的要求。9
发行人应披露的风险因素包括( )。
某公司明年的经营杠杆系数为2.5,财务杠杆系数为1.8,若明年该公司营业收入降低10%,就会造成每股收益()。
关于职业劳动,正确的说法是()。
关系R、S如下图所示,关系代数表达式π4,5,3(σ1<6(R×S))的输出结果与(34)等价,该表达式与(35)等价。若对关系R、S进行自然连接,所得关系的属性列数和元组个数分别为(36)。
相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和
最新回复
(
0
)