C3_文件操作与习题课v0.2.docVIP

  • 1
  • 0
  • 约9.28千字
  • 约 11页
  • 2018-05-30 发布于河南
  • 举报
C3_文件操作与习题课v0.2

第三课:文件操作与习题课 *文件操作: 在很多时候,我们在进行大量运算时,为防止意外情况出现(比如断电,内存不 足等), 需要保存运算的临时结果并在程序再开时读取之;或是为以文件形式输入输出 一些要求的数据。这时,我们就需要用到文件操作。 文件操作有个基础的数据类型FILE,FILE在 stdio.h中的定义见右。 右方代码并不要求掌握,其中struct将会在数 据结构初步中讲到。#ifndef,#define,#endif等 属于C语言预处理范畴,只在有特殊用到的程序中会 进行解释,并不会在课中讲到。如果想查阅相关信息, C语言书中一般会有相关章节。 从右边我们了解到:FILE的本质是一个叫 _iobug的结构体。内部有关于字串指针,暂时文件 名,文件缓存、缓存大小等信息。 相关函数: ·文件打开关闭函数:fopen和fclose ·字符读写函数:fgetc和fputc ·字符串读写函数:fgets和fputs ·数据块读写函数:fread和fwrite ·格式化读写函数:fscanf和fprinf 运行结果: 注:1.fopen的用法为:FILE* 返回文件指针fopen(char* 文件名, char* 控制命令)。 控制命令wb的作用是:用二进制(b)方式打开只读文件(w)。 fclose的用法为:flose(FILE* 待关闭的文件指针)。 fprintf(FILE* 待写的文件指针, char* 输出字串模板, 字串模板参数)。其中字串 模板及字串模板参数与printf中的参数用法一致。 fputs(char* 待输出字符串, FILE* 待写的文件)。将待写字符串写到待写文件中。 fputc(char/int 待输出字符, FILE* 待写的文件)。将待写字符写入待写文件中。 *fwrite(待写信息指针,待写块大小,待写块数,待写文件指针)主要在结构体中使 用,现在暂不研究。 文件使用完成后一定要关闭(fclose),否则其它进程将无法读写该文件,也有可能 引起很多稀奇古怪的异常。 例2:常用读文件操作实例 运行结果: 注:1.fopen的控制命令rb,作用是以二进制方式只读打开。 fread的用法是fread(接收信息指针,读取块大小,读取块数,待读文件指针),将文 件指针在文件中的指向位置开始向后读取读取快大小*读取块数的信息,并往接收 指针指向的地址上覆写。 fgets的用法为fgets(char* 信息接收字符串, FILE* 待读文件指针)。 fgetc的用法为char/int 读取到的字符(FILE* 待读文件指针)。 fscanf一般用得较少,就不做介绍了…… 本节相关的文件操作只作了解,相关具体使用将在以后有所讲解。 习题课: 第一章习题: 闰年问题。 问题分析:判断闰年的标准是:不被4整除的不是闰年,剩余余的不被100整除的是闰年,剩余的不被400整除的不是闰年,被400整除的是闰年。即: 被4整除 是 被100整除 是 被400整除 是 是闰年 否 非闰年 否 是闰年 否 非闰年 以上是按年份规划的。按图上要求,很容易用3个if语句写出相关程序。但同时,问题也可以按结果规划: 是闰年 被4整除且不被100整除、被400整除 非闰年 不被4整除、被100整除且不被400整除 此时,用1个if语句就可以了。 第一个表格对应的程序: 第二个表格对应的程序: 运行结果: 输出符号菱形,上三角行数为输入。 如:输入: 3 输出: * *** ***** *** * 问题分析:首先,要看出整个菱形的组成。 菱形的组成元素:空格‘ ’,符号‘*’,换行符‘\n’。 菱形的组成分布:可以认为由一个与输入数行数相等的正三角与比输入数少一行的倒三角组成。 第二部:对正三角每行分析: 记输入数为L,则易见: 第一行的空格数为L-1个,符号数为1个,1个换行。 第二行的空格数为L-2个,符号数为3(2*2-1)个,换行。 …… 最后一行(第L行),空格数为0(L-L)个,符号数为(2*L-1)个,换行。 所以,对第i行可以很容易地得出:空格L-i个,符号(2*i-1)个,换行。 即: 行号 空格数 符号数 换行符数 1 L-1 1 (2*1-1) 1 2 L-2 3 (2*2-1) 1 …… i L-i 2*i-1 1 …… L 0 (L-L) 2*L-1 1 按表能很容易地用for循环输出每个行所需的东西。 至于下三角,将行号从L-1输出到1就已经出来了。 程序代码: 读者应该注意到了,语句块: for (j=0;jL-i;j++) printf( ); for (j=0;j2*i-1;j++) printf(*);

文档评论(0)

1亿VIP精品文档

相关文档