当前课程知识点:C语言程序设计 > 第22讲 编程训练 > 编程训练 > 文件(下)
这个例子要求将一个磁盘文件中的信息
复制到另一个磁盘文件中
解题思路是从源文件中逐个读入字符
然后逐个输出到目标文件中
好我们看因为这个例子要求从一个文件当中
读入信息写入到另一个文件当中
就是需要有两个文件
所以这定义了两个文件指针
在这个地方输入两个文件的文件名
这儿打开要读的那个文件
就是以读的方式打开
如果打开失败提示无法打开此文件
同样的要写的那个文件
就是out那个文件以写方式打开
如果打开失败就是返回值是NULL的话
提示无法打开此文件
然后也退出
然后while这用feof这个函数判断到了没到文件尾部
如果没到文件尾部就用fgetc
这个函数从in文件中读出一个字符赋值给ch
然后再用fputc把这个字符写入到out文件当中
整个这个循环一直到In文件到文件尾位置
然后这儿我们关闭两个文件
因为这个程序要想正确运行
它需要有一个这个要读入的文件
那我们这儿就需要事先创建这么一个文件
要不然在这个地方就会打开失败
所以我们在这个地方先创建一个文件
我们给这个文件输入一些
字符
然后把它保存了
然后我们再运行这个程序
这个输入读入文件名字就是我们刚建立的这个文件
我们看一下这个运行结果
那我们看打开这个file2.txt以后
它里面的内容就是file1里面的内容
这样就验证了这个程序能够把file1.txt中的内容
给复制到file2.txt当中
文件的读写还可以是按格式方式读写
格式化的读写函数分别是fscanf和fprintf
这两个函数使用的时候它
和我们前面讲过的从键盘读入scanf
以及输出到屏幕上printf这两个函数使用起来非常相似
唯一的差别就是fscanf是从文件当中读出数据
fprintf它不是输出到屏幕上是输出到一个文件当中
除此以外的方式
和scanf与printf很相似
我们看一个简单的例子
比方在这个地方
这儿是前面定义好的一个文件指针
然后就是按照这种格式从这个文件中读出数据
放到i和t这两个变量当中
这是fprintf
我们看这个例子
这儿就可以把前面读出来的两个变量的值
以这样的格式写入到这个文件当中
文件读写还可以按数据块方式进行
按数据块方式读写有fread
这是读
以及fwirte
它里面有几个参数
其中的fp是要读取的文件指针
buffer是待读入数据块的起始地址
size是每个数据块的大小
count是最多允许读取的数据块的个数
fwrite这里面的参数和上面fread非常相似
我们看一个按数据块读写文件的例子
这个例子是要求从键盘输入十个学生的有关的数据
然后把他们转存到磁盘文件上去
解题思路是定义有10个元素的结构体数组
用来存放10个学生的数据
从main函数输入10个学生的数据
用save函数实现向磁盘输出学生数据
用fwrite函数一次输出一个学生的数据
我们看一下这个程序
这个程序首先在前面定义了这样一个结构体的数组
然后我们在main函数当中
先是通过这个循环从键盘上读入结构体数组的信息
读入以后调save这个函数
这个函数里面我们看它先是打开这个文件
要往里写的这个文件
如果打开失败有提示
然后呢 这个地方也是一个循环
把刚才在main函数当中读入的结构体数组的信息
用fwrite这个函数给它写到fp这个文件当中
如果写失败
这个地方也有提示
写完了以后把它关闭掉
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-作业
-循环类型
-作业
-程序结构
-函数基础
-作业
-数组基础
-作业
-作业
-作业
-作业
-程序调试
- 文件(上)
- 编程训练