当前课程知识点:C语言程序设计 > 第22讲 编程训练 > 编程训练 > 文件(上)
大家在使用计算机时最常接触的就是文件
计算机中图像 视频 声音 文字都以文件方式存储
与文件有关的编程不是C语言程序设计的核心内容
但学习这部分内容对于理解计算机的工作方式有很大帮助
文件一般指存储在外部介质上有名字的一组相关数据的集合
用文件可长期保存数据
实现数据共享
程序中的文件主要是两个操作
写 在程序运行时由程序在磁盘上建立一个文件
通过写操作将数据存入该文件
读 由程序打开磁盘上的某个已有的文件
并通过读操作将文件中的数据读入内存供程序使用
文件有两种情况
一种是文本文件
另外一种叫二进制文件
文本文件是一种字符序列
文件中只存储每个字符的编码
不存储其他信息
其他信息包括像字符格式、颜色、大小
例如
如果一个文本文件中存储和显示Hello!
实际存储的是这6个字符的ASCII码
这就是Hello!的ASCII码
当然这写成二进制形式了
完全也可以写成十进制或者十六进制
常见的文本文件包括Windows自带的记事本软件
输入 存储的文件以及各种编程语言源程序
像我们C语言的源程序也是文本文件
二进制文件是一种字节序列
文件中存储的数据的含义要靠打开该文件的软件来解读
相比于文本文件
二进制文件更普通
大多数文件都是二进制文件
例如word文件 图像文件 声音文件 视频文件等等
“二进制文件”这个词容易引起混淆
事实上
计算机中的信息全部是二进制存储的
那么如果是直接看分类的话
把文件分成文本文件与二进制文件
感觉好像文本文件不是二进制存储
这个就容易引起混淆
所以二进制文件或许叫做“非文本文件”更合适
对文件的操作包括
打开文件 关闭文件 从文件中读取数据
把数据写入文件 文件指针定位等
我们先看一下文件的打开和关闭
打开文件时用fopen这个函数
这是函数的原型
这是一个例子
这儿fopen的这几个参数含义分别是这样的
这个里面首先filename是文件名
可以包含路径
如果不包含路径
表示打开当前目录下的文件
这个mode是打开方式
常用的有”r”、”w”、”rw”和“a”
分别表示只读 只写 读写和添加
”rb“表示只读二进制文件
文件打开操作以后返回值为指向此文件的指针
留待以后使用
如果打开失败就返回NULL
然后这个在C语言中专门有一个这种文件的指针类型
就这么定义FILE *fp
表示这是一个名字叫fp的这样一个文件指针变量
那么现在来看一下刚才说的这个具体应用的例子
先定义这样一个文件指针变量
然后这里使用fopen
打开一个C根目录下的CONFIG.SYS这个文件
打开方式是这个mode是”rw”方式
是可以读也可以写
那么这个打开以后
打开的文件指针就赋值给fp
关闭文件用fclose
这是函数原型
使用的时候
比如说要把刚才打开的那个文件给它关闭掉就用fclose(fp)
这里面是文件指针
我们看一下以字符方式读写文件的这样一个例子
这个例子要求从键盘输入一串字符
转存到磁盘文件上
我们看一下这个程序
这儿定义文件指针
然后这样打开
这个地方没写路径
那就表示是当前目录下
以写的方式打开
然后如果打开以后文件指针等于NULL
表示打开失败
这样输出一个提示
然后程序退出
后面情况就是文件打开成功的情况
然后从键盘上输入一个字符
如果这个输入的字符不是回车符
那么就用fputc这个函数
把刚才输入的这个字符输出到文件当中去
然后再从键盘上读入一个字符
然后这样循环判断
如果不是回车符就继续写入到文件中
整个过程完了以后把文件关闭
我们把程序编译运行一下
然后看看运行结果
这个是我从键盘上输入的hello这5个字符
因为我们这个程序要求是从键盘上输入的字符
保存到当前目录下的”demo.txt“当中
我们打开当前目录看看实现了这个功能没有
这个就是用记事本打开这个文本文件
我们看到刚刚输入的hello
这几个字符已经保存到文件当中了
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-循环类型
-作业
-程序结构
-函数基础
-作业
-数组基础
-作业
-作业
-作业
-作业
-程序调试
- 文件(上)
- 编程训练