当前位置:鱼C工作室 >C++ > 查看文章

从另一个小程序接着说 – C++快速入门04

从另一个小程序接着说

 

让编程改变世界

Change the world by program


 

文件I/O

 

前边我们已经给大家简单介绍和演示过C和C++在终端I/O处理上的异同点。

现在我们接着来研究文件I/O。

 

编程任务:编写一个文件复制程序,功能实现将一个文件复制到另一个文件。

例如:fileCopy  sourceFile  destFile

 

C语言版实例分析:fileCopy.c (源代码下载)

 

重点分析

 

argc与argv[]

在程序中,main 函数有两个参数,整型变量argc和字符指针数组argv[]。

 

argc的含义是程序的参数数量,包含本身。

argv[]的每个指针指向命令行的一个字符串,所以argv[0]指向字符串”copyFile.exe”。

argv[1]指向字符串sourceFile,argv[2]指向字符串destFile。

 

in和out是我们声明的两个文件指针,它们的类型都是FILE*,分别作为两个 I/O 流对象使用。

if( argc != 3 ) 是为了确保程序参数个数的正确性。

 

通过fopen()函数我们以二进制的形式按可读/可写方式打开两个文件并返回两个文件指针给in和out。

为了确保文件成功打开,我们还对fopen()的返回值进行了检查,如果为成功打开,我们就向标准错误流stderr发送一条消息。

 

getc() 函数一次从输入流(stdin) 读取一个字符,putc() 函数把这个字符写入到输出流(stdout)。

当getc() 遇到文件结束标志的时候,函数就返回 EOF。EOF 是一个宏,在stdio.h中定义,其值为一个负整数,通常是 -1。

 

EOF 事实上有两个含义:MSDN

注意细节,getc() 的返回值是 int 类型哦,所以我们声明时应该是 int ch。而不是char ch。

 

C++的文件操作

 

由于我们这个C++ 的版本相对有点不同,对类和对象的应用比较多和烦,但是由于我们现在还没开始讲解类和对象,所以大家现在尽管“先用”,

暂时可以不求甚解!等到实际学了类和对象,大家回过头来看,就明白了一切!有些朋友可能会问:为什么不先把类和对象讲清楚呢?

 

我们依旧老规矩,以实例为主,以事实说话:

例子一:example1.cpp (源代码下载)

 

从刚刚的例题我们得到的信息是C++ 由于有类的封装,很多东西都变得更加“仔细”了!

上边的例题我们用到的是文件的读取类 ifream。

接着我们结合例题来说说文件的写入要用到的类 ofream。

 

分页阅读: 1 2 下一页
为您推荐

报歉!评论已关闭.