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的返回结果进行判断,看是否成功。对函数返回结果进行判断,可以大幅提高程序的健壮性,但是也存在很大的局限性,例如:
    将用户函数和出错处理程序放在一起,出错程序的编写比较烦琐。也就是说在哪里发现错误,哪里就要处理错误。
    使用返回值表现错误,可以传递的信息有限。
    错误处理对别人的错误无能为力。比如调用了别人的函数,而该函数中对错误的处理不够完善。
  • 相关阅读:
    CF261E Maxim and Calculator
    USACO Section 2.1
    码工新人的成长升职之路~
    Skip level 1 on 1
    有效利用1 on 1
    [职场感言] 入职一年总结
    职场新人建议
    L1 正则为什么会使参数偏向稀疏
    Inception网络
    ResNet
  • 原文地址:https://www.cnblogs.com/tangjunjun/p/11676515.html
Copyright © 2011-2022 走看看