版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1C语言程序设计对文件的输入输出语言程序设计对文件的输入输出2021-9-262第1页/共51页2021-9-263第2页/共51页第3页/共51页(内容为二进制数据)流。第4页/共51页第5页/共51页文件路径文件路径文件名主干文件名主干文件后缀文件后缀第6页/共51页文件名文件名第7页/共51页命名规则遵循标命名规则遵循标识符的命名规则识符的命名规则第8页/共51页一般不超过一般不超过3个字母个字母(doc、txt、dat、c、cpp、obj、exe、ppt、bmp等)等)第9页/共51页2021-9-2611第10页/共51页2021-9-2612第11页/共51页2021-9-2
2、6130011000100110000001100000011000000110000(1)(0)(0)(0)(0)ASCII形式形式00000000000000000010011100010000二进制形式二进制形式(10000)第12页/共51页程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区l缓冲文件系统:第13页/共51页程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区磁盘磁盘从内存向磁盘输出数据从内存向磁盘输出数据装满缓冲区装满缓冲区第14页/共51页程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区磁
3、盘磁盘从磁盘向计算机读入数据从磁盘向计算机读入数据充满缓冲区充满缓冲区第15页/共51页系统声明的,取名为FILE第16页/共51页第17页/共51页文件文件f1的的文件信息文件信息区区fp1文件文件f2的的文件信息文件信息区区fp2文件文件f3的的文件信息文件信息区区fp3第18页/共51页2021-9-2620第19页/共51页2021-9-2621第20页/共51页2021-9-2622” ”:只读方式只读方式 为读为读( (输入输入) )文本文件打开文件。若文件不存在,返回文本文件打开文件。若文件不存在,返回NULLNULL。” ”:只写方式只写方式 为写为写( (输出输出) )文本文
4、件打开文件。若文件不存在,则建立一个新文件;若文本文件打开文件。若文件不存在,则建立一个新文件;若,则,则。” ”:追加方式追加方式 为写为写( (输出输出) )文本文件打开文件。若文本文件打开文件。若,则,则原来文件的原来文件的,将新的数据,将新的数据到原来数据的到原来数据的;若文件不存在,则返回;若文件不存在,则返回NULLNULL。第21页/共51页2021-9-2623”:只读方式只读方式 为读为读( (输入输入) )二进制文件打开文件。若文件不存在,返回二进制文件打开文件。若文件不存在,返回。”:只写方式只写方式 为写为写( (输出输出) )二进制文件打开文件。若文件不存在,则建立一
5、个新文件;若二进制文件打开文件。若文件不存在,则建立一个新文件;若,则,则。”:追加方式追加方式 为写为写( (输出输出) )二进制文件打开文件。若二进制文件打开文件。若,则,则原来文件的原来文件的,将新的数据,将新的数据到原来数据的到原来数据的;若文件不存在,则返回;若文件不存在,则返回。第22页/共51页2021-9-2624第23页/共51页2021-9-2625第24页/共51页2021-9-2626第25页/共51页2021-9-2627系统定义的文本文件结束标志,其值为系统定义的文本文件结束标志,其值为 (-1)。 第26页/共51页2021-9-2628第27页/共51页2021
6、-9-2629【例10.1】利用fopen函数建立一个文本文件,并显示文件中的内容。#include void main( ) FILE *fp; /* 定义一个文件指针变量fp */ int c; /* c为存放字符的变量 */ char filename40; /* filename用于存放数据文件名 */ printf(filename: ); /* 提示输入磁盘文件名 */ gets(filename); if (fp=fopen(filename,w)=NULL) printf(Cant open the %sn, filename); exit(0); 测试打开文件是否成功测试打开
7、文件是否成功第28页/共51页2021-9-2630while (c=getchar( )!=EOF) /*键盘文件结束标志:输入Ctrl+z,显示Z后回车*/ putc(c, fp); /* 将键盘输入的字符写到文件中 */fclose(fp); /* 建立文件结束,关闭文件 */printf(outfile:n);fp=fopen(filename,r); /* 以读方式打开文本文件 */while (c=getc(fp)!=EOF) /* 未读到文件结束标志时 */ putchar(c); /* 在显示器显示读出的字符 */fclose(fp); /* 读文件结束,关闭文件 */第29页
8、/共51页2021-9-2631第30页/共51页2021-9-2632 第31页/共51页2021-9-2633第32页/共51页2021-9-2634第33页/共51页2021-9-2635【例10.3】应用fputs和fgets函数,建立和读取文本文件。#include stdio.h#include string.h void main( ) FILE *fp; /* 定义一个文件指针变量fp */ char filename40,str81; printf(filename: ); /* 提示输入磁盘文件名 */ gets(filename); if (fp=fopen(filena
9、me,w)=NULL) /* 在磁盘中新建并打开一个文本文件,同时测试是否成功 */ printf(Can t open the %sn,filename); exit(0); 第34页/共51页2021-9-2636while (strlen(gets(str)0) /* 键盘输入空串(即仅输入回车)则输入全部结束 */ fputs(str,fp); /* 将键盘输入的字符串写到文件中 */ fputc(n,fp); /* 在文件中加入换行符作为字符串分隔符 */ fclose(fp); /* 建立文件结束,关闭文件 */printf(outfile:n);fp=fopen(filename
10、,r); /* 以读方式打开文本文件 */while (fgets(str,81,fp)!=NULL) /* 从文件读取字符串并测试文件是否已读完 */ printf(%s,str); /* 将文件中读取的字符串分行显示 */fclose(fp); /* 读文件结束,关闭文件 */第35页/共51页2021-9-2637第36页/共51页2021-9-2638第37页/共51页2021-9-2639 由于由于EOF(-1)是一个合法的整数,因此应该用是一个合法的整数,因此应该用ferror函数检测函数调用是否出错。函数检测函数调用是否出错。 第38页/共51页2021-9-2640 EOF(-
11、1)是是getw函数可能返回的合法值,所以应该用函数可能返回的合法值,所以应该用feof函数或函数或ferror函数检测文件是否结束或调用失败。函数检测文件是否结束或调用失败。 第39页/共51页2021-9-2641【例10.5】应用putw和getw函数建立二进制整型数据文件并读取其中的数据。#include stdio.hvoid main( ) FILE *fp; /* 定义一个文件指针变量fp */ char filename40; /* filename用于存放数据文件名 */ int i,n1=5,n2,x5=10,22,36,48,59,y5; printf(filename:
12、 ); gets(filename); if (fp=fopen(filename,wb)=NULL) /* 新建并打开一个二进制文件,并测试是否成功 */ printf(Can t open the %sn,filename); exit(0); 第40页/共51页2021-9-2642putw(n1,fp); /* 向二进制文件写入一个整数 */ for (i=0; in1; i+) putw(xi,fp); /* 将x数组的5个整数写入二进制文件 */ fclose(fp); /* 建立文件结束,关闭文件 */ printf(outfile:n); fp=fopen(filename,r
13、b); /* 以读方式打开二进制文件 */ n2=getw(fp); /* 从二进制文件读取一个整数 */ for (i=0; in2; i+) yi=getw(fp); /* 从文件读取一个整数赋给y数组元素 */ printf(%d ,yi); printf(n); fclose(fp); /* 读文件结束,关闭文件 */ 第41页/共51页2021-9-2643第42页/共51页2021-9-2644第43页/共51页2021-9-2645【例10.6】应用fwrite与fread函数建立一个存放学生电话簿的二进制数据文件并读取其中的数据。#include stdio.h #includ
14、e stdlib.h void main( ) FILE *fp; int i; char filename40; /* filename用于存放数据文件名 */ struct tel char name20, tel9; in5, out5; printf(filename: ); gets(filename); if (fp=fopen(filename,wb)=NULL) printf(Cant open the %sn,filename); exit (0); 新建并打开一个二进制文件,并测试是否成功新建并打开一个二进制文件,并测试是否成功 第44页/共51页2021-9-2646fo
15、r(i=0; i5; i+) printf(name: ); gets(); printf(tel: ); gets(ini.tel); fwrite(in, sizeof(struct tel), 5, fp); /* 文件中写入5个学生的电话 */ fclose(fp); /* 建立文件结束,关闭文件 */ printf(outfile:n); fp=fopen(filename,rb); /* 以读方式打开二进制文件 */ fread(out,sizeof(struct tel),5,fp); /* 从文件读取5个结构体数据 */ printf(name telephonen); for(i=0; i5; i+) printf(%-20s%-8sn,,outi.tel); fclose(fp); /* 读文件结束,关闭文件 */ 第45页/共51页2021-9-2647文件的读写是通过文件系统内部的“”进行的。当一个文件时,系统自动为该文件分配的FILE结构体变量中有一个成员,对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江财经大学东方学院单招职业倾向性测试题库必考题
- 2026年河南轻工职业学院单招职业倾向性测试必刷测试卷必考题
- 2026年重庆航天职业技术学院单招职业适应性测试必刷测试卷必考题
- 2026年辽宁现代服务职业技术学院单招综合素质考试题库及答案1套
- 2026年吉林电子信息职业技术学院单招职业倾向性考试题库及答案1套
- 2026年海南经贸职业技术学院单招职业倾向性考试必刷测试卷附答案
- 2026年重庆市德阳市单招职业倾向性测试题库附答案
- 2026年苏州高博软件技术职业学院单招职业适应性考试题库新版
- 2026年南京视觉艺术职业学院单招职业适应性考试必刷测试卷必考题
- 2026年重庆市巴中地区单招职业适应性测试必刷测试卷必考题
- 2025年河北保定徐水区妇幼保健院公开招聘专业技术人员25名笔试考试备考试题及答案解析
- 企业安全生产风险评估报告
- GB/T 46413-2025遥控潜水器作业规程
- 全文《黄河保护法》修订班会教育PPT
- 高校内部控制之实务与案例课件
- 掌握边际报酬递减规律课件
- 变压器交接验收课件
- 修井设备培训教材课件
- 民航安全风险管理-中国民
- 国开成本会计第9章综合练习试题及答案
- 大学生10分钟心理剧创意剧本8人
评论
0/150
提交评论