zoukankan      html  css  js  c++  java
  • 学习代码1

    #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到最大的n位数
    TCP/IP协议
    函数指针做函数参数
    Ubuntu系统扩大/home分区
    《一切都准时》一首非常有意思的小诗
    阿里云服务器编译安装Hadoop 2.7.4 伪分布式环境
    C++中的string类型占用多少个字节
    使用apt-file安装需要的软件包或者库文件
    剑指offer之【表示数值的字符串】
    剑指offer之【正则表达式】☆
  • 原文地址:https://www.cnblogs.com/tangjunjun/p/11676515.html
Copyright © 2011-2022 走看看