zoukankan      html  css  js  c++  java
  • 第二课:文件操作【问题查找和解决】

    因为编译器的不同,可能运行的效果也不同,小编用VS2019的。

    写出代码有问题,那就是考验一个人解决问题的能力体现。有问题不用怕,就怕没问题。Are you OK?

    Ready!

    项目下创建“Mr.she.txt”文件,同时输入一些字母。

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    void WriteToFile();
    int main()
    {
    
        WriteToFile();
    
        system("pause");
        return 0;
    }
    
    void WriteToFile()
    {
        FILE* f_Writed = NULL;     //写入流对象
        FILE* f_Read = NULL;       //读出流对象
    
            //打开文件
        f_Read = fopen("Mr.she.txt", "r");     //Mr.she.txt 就是要用到的文件名,小编先在项目下创建好了,‘r’只读属性,就是防止写入的功能
       //判断文件打开是否失败
        if (!f_Read)
        {
            cout << "文件打开失败!" << endl;
            system("pause");
            return;
        }
    
        f_Writed = fopen("Mr.jie.txt", "w");
        //判断写入时,文件打开与否
        if (!f_Writed)
        {
            cout << "文件打开失败!" << endl;
            system("pause");
            return;
        }
    
        cout << "文件打开成功!" << endl;
    
        //写入和读出
       //  还没写呢
          //关闭流对象
        if (f_Writed || f_Read)
        {
            fclose(f_Writed);
            fclose(f_Read);
        }
    }

    运行后,就能输出文件打开了。

    fread(void* buffer,size_t  _Elementsize,size_t _Elementcount,File* stream);
    write(void* buffer,size_t _Elementsize,size_t _Elementcount,File* stream);

    读出和写入的函数,虽然传入的参数略同,但是实现的功能却不一样,详解请看他人博客,小编就不多说了。记住:它们返回的值都是size_t类型(字节数),

    看一个人的代码技术含量,会看函数返回值就是能力之一。

    void WriteToFile()
    {
        FILE* f_Writed = NULL;     //写入流对象
        FILE* f_Read = NULL;       //读出流对象
    
            //打开文件
        f_Read = fopen("Mr.she.txt", "r");     //Mr.she.txt 就是要用到的文件名,小编先在项目下创建好了,‘r’只读属性,就是防止写入的功能
       //判断文件打开是否失败
        if (!f_Read)
        {
            cout << "文件打开失败!" << endl;
            system("pause");
            return;
        }
    
        f_Writed = fopen("Mr.jie.txt", "w");
        //判断写入时,文件打开与否
        if (!f_Writed)
        {
            cout << "文件打开失败!" << endl;
            system("pause");
            return;
        }
    
        cout << "文件打开成功!" << endl;
    
        //写入和读出
    
        //声明一些需要用到的变量
        char              stringname[256] = { 0 };              //用来存储文件被读出的数据
        int               ret = 0;                            //接收feof()状态值
        size_t            readLength = 0;                     //接收fread()数据大小值
        size_t            writeLength = 0;                    //接收fwrite()数据大小值
        //读出、写入文件
        while ((ret = feof(f_Read)) != EOF)
        {
            //读出文件,因为我们假设不知道文件所写的是什么内容,文件又不大的话,可以先设定为256
            //当然sizeof(stringname)也行
            readLength = fread((char*)stringname, 1,sizeof(stringname), f_Read);
    
            //做个打印输出,以判断是否读出
            /*for (int i =0;i<readLength ; i++)
            {
                cout << stringname[i] << endl;
            }*/
    
    
            //打开文件,依次将每读出一块数据,数据可以设定,然后写入到文件中
            writeLength = fwrite((char*)stringname,1, readLength, f_Writed);
    
            //当读取完毕,结束继续读,feof()这个函数会读取2次
            if (ret == feof(f_Read))
            {
                system("pause");
                break;
            }
        }
    
        //判断当写入和读出两个数据完全不同,则爆出提示错误,退出
        if (readLength != writeLength)
        {
            cout << "写入文件失败,请检查是否磁盘溢满!" << endl;
        }
    
       //  还没写呢
          //关闭流对象
        if (f_Writed || f_Read)
        {
            fclose(f_Writed);
            fclose(f_Read);
        }
    }

    运行后的结果就是,“Mr.jie.txt”文件内能输出你手头所输入的数据。

    条条英符铸平凡,行行代码显乾坤;
  • 相关阅读:
    Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the same entity解决方法
    基于注释配置bean和装饰bean
    Oracle 11g+oracle客户端(32位)+PL/SQL develepment的安装配置
    SpringData JPA的学习笔记之环境搭建
    Maven+struts2+spring4+hibernate4的环境搭建
    springmvc集成Ueditor插件实现图片上传2、
    c博客作业函数
    C语言博客作业2循环结构
    C语言第0份作业
    c博客作业分支、顺序结构
  • 原文地址:https://www.cnblogs.com/VisiousDragon/p/13778164.html
Copyright © 2011-2022 走看看