
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.3 文件内容的读/写实例
前面我们介绍了访问文件的一般流程,可能大家感觉还会有点抽象。本节将通过一个实例来实际演示如何读/写一个文件。这个实例主要模拟Linux的cp命令,也就是实现文件的拷贝功能。
本实例主要用到了文件操作的4个函数,open()、read()、write()和close()等。这些函数很简单,我们通过其名称就可以看出作用。下面看一下该实例的代码(见代码2-1)。
代码2-1 拷贝文件的实现


在该实例中,分别打开两个文件(第24行~第31行),如果目标文件不存在则创建新文件。然后不断循环地从源文件读取数据并写入目标文件(第39行~第50行),直到读完源文件的数据为止。最后将两个文件关闭(第58行~第60行)。
完成上述代码的编写后,我们可以将其编译为一个可执行文件,然后就可以使用该功能了。具体编译的方法如下:

如果编译没有问题,就可以进行如下测试:

执行完成上述代码后,我们可以对比一下copy_file.c和dest.c文件的内容。比如使用diff命令,可以发现两者的内容是完全一样的,也就是我们实现了拷贝文件的功能。