码迷,mamicode.com
首页 > 其他好文 > 详细

学习代码1

时间:2019-10-15 11:36:33      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:turn   names   目标   指针   fwrite   ace   函数返回   main   运行程序   

#include
#include
using namespace std;
int main()
{
FILE * fin;
FILE * fout;
char src_name[128];
char dst_name[128];
cout<<"请输入源文件的文件名:"<<endl;
cin>>src_name;
cout<<"请输入目标文件的文件名:"<<endl;
cin>>dst_name;
fin = fopen( src_name,"r" );
if( NULL == fin )
{
    cout<<"打开源文件失败!"<<endl;
    return 0;
}
fout = fopen( dst_name, "w" );
if( NULL == fout )
{
    cout<<"打开目标文件失败!"<<endl;
    fclose( fin );
    return 0;
}
//文件复制
while( true )
{
    char buffer[128];
    int count = fread( buffer, sizeof(char), 128 , fin );
    if( count == 0 )
    {
        cout<<"读文件错误!"<<endl;
        break;
    }
    int write_count = fwrite( buffer, sizeof(char), count, fout );
    if( write_count < count )
    {
        cout<<"写文件错误!"<<endl;
    }
    if( feof( fin ) )
            break;
}
//关闭文件
if( fclose( fin ) )
{
    cout<<"关闭源文件失败!"<<endl;
}
if( fclose( fout ) )
{
    cout<<"关闭目标文件失败!"<<endl;
    }
    cout<<"复制完成!"<<endl;
    return 0;
    }
建立一个控制台工程,并将上述代码复制到源文件中,编译并运行,其结果如图10-2所示。
[插图]
图10-2 文件复制错误结果
出现这样的结果是因为源文件src.txt不存在,而源文件是以读模式打开的,必须要存在。在工程的目录下新建一个src.txt文件,写一些内容进去,重新运行程序,结果如图10-3所示。
[插图]
图10-3 文件复制正确结果
fopen函数打开一个文件,打开成功,返回文件指针,若失败则返回NULL,因此需要对fopen的返回结果进行判断。同理也要对fread和fwrite的返回结果进行判断,看是否成功。对函数返回结果进行判断,可以大幅提高程序的健壮性,但是也存在很大的局限性,例如:
将用户函数和出错处理程序放在一起,出错程序的编写比较烦琐。也就是说在哪里发现错误,哪里就要处理错误。
使用返回值表现错误,可以传递的信息有限。
错误处理对别人的错误无能为力。比如调用了别人的函数,而该函数中对错误的处理不够完善。

学习代码1

标签:turn   names   目标   指针   fwrite   ace   函数返回   main   运行程序   

原文地址:https://www.cnblogs.com/tangjunjun/p/11676515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!