首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 程序员资料 > 正文

2011年软件水平考试程序员之程序设计知识点29

来源:考试吧Exam8.com) 2011-8-30 11:20:57 考试吧:中国教育培训第一门户 模拟考场
考试吧整理“2011年软件水平考试程序员之程序设计知识点29”,方便考生备考!

  4. 数据成块输入/输出函数

  为加快程序的处理速度,程序可以成批地读人文件中的数据,也可成批地写数据到文件。它们是函数fread()和fwrite()。

  成批读函数fread()的说明形式为

  int fread(char *buf,int size, int count, FILE *rfp);

  成批写函数fwrite() 的说明形式为

  int fwrite( char *buf, int size, int count,FILE *wfp);

  其中,buf是字符数组首元指针。对fread()来说,它是读人数据的存放开始地址;对bote()来说,是要输出数据的开始地址。size是读写的数据块的字节数。count为要进行读写的数据块的个数。rfp和wfp为文件指针。调用上述函数共读写size。 count个字节或字符。函数fread()和fwrite()的返回值是实际完成输入或输出的数据块的个数。一般情况下,输出调用成功,返回值为count的值。

  如果是读写二进制文件,用函数fread()和fwrite()可以读写任何类型的信息。如有一个如下形式的通信录结构类型:

  typedef struct {

  char name[21]; /* 名字 */

  char phone[15]; /* 电话 */

  char zip[10]; /* 邮编 */

  char addr[31]; /* 地址 */

  } infoType;

  利用类型infoType,可定义数组,如:

  infoType info[30];

  表示结构数组info[]能存放30个通信录数据。而下面的两个函数调用能分别实现20个通信录信息从某文件读出和写入某文件:

  fread( info,sizeof(infoType),20,rfp);

  fwrite( info,sizeo(infoType),20,wfp);

  5.格式输入/输出库函数

  与用函数scanf()从标准设备输入和用函数printf()向标准设备输出一样,一般文件也可进行格式输入和格式输出。

  函数fscanf()和fprintf()分别能对一般文件进行格式输入和格式输出。它们的调用形式分别为

  fscantf(文件指针,格式字符串,输入项地址表)

  和

  fprintf(文件指针,格式字符串,输出项表)

  例如:

  fscanf(rp,“%d%f”,&i,&r);

  fprintf(wp,“i=%d, r=%6.4f\n”, i,r);

  前者表示从与叩相联系的文件为变量i和r读人数据;后者表示将整型变量i和实型变量r的值按格式输出到与呷相联系的文件上。

  6.字符串输入/输出库函数

  函数fgets()和fputs()分别用于从正文文件输入字符串和向正文文件输出字符串。它们的说明形式分别为

  char *fgets(char *str,int n, FILE *fp)

  和

  fputs(char *str, FILE *fp)

  函数fgets() 用于从文件读取字符序列,并存于字符指针所指出的存储区域中。当连续读人n-1个字符,或遇到换行符时,读字符过程结束。

  函数fgets()与函数gets()都在读人的字符序列之后自动存储字符串结束标记'\0’,使其成为字符串,并返回字符率的首字符指针。但它们有差别,函数fgets()除增加整型参数和文件指针参数之外,还在读到换行符时,存储换行符,而函数gets()不存储换行符。

  函数fputs()的作用是将字符串复制到文件。其中字符串的结束标记符是不复制的,也不在复制的字符序列之后另外再添加换行符,这一点与函数puts()不同。

  7.文件定位库函数

  利用前面介绍的函数进行文件操作,只能顺序读写文件。然而,在有些场合,还需要能对文件作随机存取。实际上,因文件是存储在外部存储介质上的数据流,程序即刻能读写的是文件某一位置上的数据,这个位置称为文件的当前读写位置。对于顺序读写情况,每读写一个字符后,当前位置就自动向后移一个字符位置。对于允许随机读写的文件,要读写其他别的位置上的数据,就得改变文件当前读写位置。实现这样的移动可调用库函数rewind()和fseek()来实现。另设有函数ftell()用于查询文件当前读写位置。

  函数rewind()的说明形式为

  void rewind( FILE *fp)

  函数rewind()的作用是使文件当前位置重新回到文件之首。该函数没有返回值。

  函数fseek()是实现文件随机存取的最主要函数,用它可以将文件的当前位置移到文件的任意位置上。所谓文件的随机存取(或随机读写),是指读写完一个字符(或字节)之后,并不一定要读写其后继的字符(或字节),可以改变当前位置,去读写文件中其他位置上的字符(或字节)。

  函数fseek()的说明形式为

  fseek(FILE *fp, long offset, int ptrname)

  其中ptname表示定位基准。只允许0,l或2。其中0代表以文件首为基准,1代表以当前位置为基准,2代表以文件尾为基准。0、l和2分别被定义为名称SEEK-SET、SEEK-CUR和SEEK-END。long型形参offset是偏移量,表示以prname为基准,偏移的字节数。因它是long型形参,当以整数作为它的实参调用函数 fseek()时,直在常数之后加上字母L,表示是long型常量。见下面调用函数fseek()的例子:

  fseek(fp,4OL,SEEK-SET);

  fseek(fp,20L,SEEK-CUR);

  fseek(fp,-30L,SEEK-END);

  分别表示将文件的当前位置定于离文件头4O个字节处、将文件当前位置定于离当前位置20个字节处、将文件的当前位置定于文件尾后退30个字节处。

  函数fseek()一般用于二进制文件的随机读写,这是因为数据在二进制文件中的表示形式与数据在内存中的表示形式相同,各种类型的数据表示都有确定的字节数。而数据在正文文件中的表示形式与数据在内存中的表示形式不同,它们在输入输出时,数据的内外表示形式要进行转换,数值类型的数据在正文文件中的表示没有固定的字节数,计算位置时会发生混乱。

  函数ftell()用于得到文件当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。调用函数ftell()就能非常容易地确定文件的当前位置。

  函数ftell()的说明形式为

  long ftell(FILE *fp)

  利用函数ftell()也能方便地知道一个文件的长。如以下语句序列:

  fseek(fp,OL,SEEK-END);

  len=ftell(fp)

  首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的偏移,该偏移值等于文件所含字节数。

  8.文件错误测式库函数

  文件处理程序常用输入输出库函数的返回值来判断输入输出是否发生错误,也可以调用文件错误测试函数了解刚完成的文件输入输出函数的调用是否有错。文件错误测试函数的说明形式为

  int ferror(FILE *fp)

  函数的返回值是与文件指针中相联的最近一次文件库函数调用是否发生错误。若有错,函数返回非0值,若没有错误,函数返回0值。通常在这非0值,详细指出错误的类别和原因。

  相关推荐:

  2011软考程序员考试复习笔试知识点整理汇总

  2011年软考程序员考试模拟试题及答案(上午题)

  2011年软考程序员考试模拟试题及答案(下午题)

文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。