zoukankan      html  css  js  c++  java
  • 第一课:文件操作【剽取其一,加解密】

    对于初学者而言,文件写入和读出很陌生,这一环可以说是蛮深奥的,小编也算是刚接触了,不过呢,小编有点心得,有的都不会写出来,但是思路在。

    经过搜集了一些说法和体会,不得不说,这门文件操作学到最后也是寂寞天堂。可能用于程序加解密一环。往深奥方面说,只要计算机还在世,你就有出头之地。

    下面,小编就文件读出和写入,浅入交流:

    首先,写入的方式和读出的方式有几种,小编取一做交流的题材。

    我们在想写文件操作时,就得用到一个文件,小编就用最简单的File文件。

    它的头文件,在你写到

     
    #include <iostream>
    using namespace std;
    
    int main ()
    {
      system("pause");
        return 0;
    }

    File也在<iostream>这个头文件包含在内了。

    既然做好准备了,那么开始逐步实现文件操作的写法了。

    当然写一段程序前,要把你想写的内容写出来,具体想实现什么功能。

    1.创建文件流

    2.打开文件

    <1>判断文件打开是否成功

    3.写入和读出

    <当你想写入时,就得注意:1.所写入的文件存在不存在 2.如果存在,就得避免被重新写入的可能,把原有数据覆盖掉 3.如果不存在,该如何创建出来>

    4.关闭文件流

     1 void WriteToFile()
     2 {
     3     FILE* f_Writed = NULL;     //写入流对象
     4     FILE* f_Read = NULL;       //读出流对象
     5 
     6     //打开文件
     7     f_Read = fopen("Mr.she.txt", "r");     //Mr.she.txt 就是要用到的文件名,小编先在项目下创建好了,‘r’只读属性,就是防止写入的功能
     8     //判断文件打开是否失败
     9     if (!f_Read)                           
    10     {
    11         cout << "文件打开失败!" << endl;    
    12         system("pause");
    13         return;
    14     }
    15 
    16     f_Writed = fopen("Mr.jie.txt", "w");
    17     //判断写入时,文件打开与否
    18     if (!f_Writed)
    19     {
    20         cout << "文件打开失败!" << endl;
    21         system("pause");
    22         return;
    23     }
    24 
    25     cout << "文件打开成功!" << endl;  
    26 
    27        //写入和读出
    28        还没写呢
    29         //关闭流对象
    30     if (f_Writed || f_Read)
    31     {
    32         fclose(f_Writed);
    33         fclose(f_Read);
    34     } 
    35 }

    写到这里,先运行下你的编译器,只要能打出“文件打开成功!”就说明你写得很成功,当然,这里我们只用到了一个功能,那就是打开,写入流为何也要打开,又为何要写出来呢,“Mr.jie.txt”这个文件就是我们要输出的文件。‘w’只写属性,当运行一次后,项目下只要没有这个文件,就会被创建出来。

    为了更为直观的了解和代码的实现,你可以在“Mr.she.txt”文件写点字符,当然在这里呢,如果写入文字效果的话,往后写代码的话,你可能会懵逼,小编建议先写入一些字母为好。

    方便你能口头眼目,读出这些字符的字节数。也为了编译器更能直观输出时,你能看得懂。

    feof(FILE* fp)    如果文件结束,则返回非0值,否则返回0
    EOF               -1

    假若你写过一些文件的话,小编就不搬门弄斧了,下面小编就会用到这个函数和EOF。

    下面,就开始读出和写入的实现,前面说到,既然“Mr.she.txt”文件内已经写了一些英文字母,就说明,我们可以直接读出来,再写入到另一个文件内“Mr.jie.txt”

    {
    //声明一些需要用到的变量
        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, sizeof(stringname),1, f_Read);
    
            //打开文件,依次将每读出一块数据,数据可以设定,然后写入到文件中
            writeLength = fwrite((char*)stringname,   readLength,1, f_Writed);
    
            //当读取完毕,结束继续读,feof()这个函数会读取2次
            if (ret == feof(f_Read))
            {
                system("pause");
                break;
            }
    
        }
    
        //判断当写入和读出两个数据完全不同,则爆出提示错误,退出
        if (readLength != writeLength)
        {
            cout << "写入文件失败,请检查是否磁盘溢满!" << endl;
        }
    }

    这一段就是先读出“Mr.she.txt”文件内容后写入"Mr.jie.txt"文件的实现方式。

    不管对与不对,先运行下看看,编译器编译才是正理。

    输出的结果,在编译器上是看不到的,因为已经输出到"Mr.jie.txt"内了。打开你的项目找到这个文件,打开就能看到一段字母,也就是你在“Mr.she.txt”文件内写的。

    条条英符铸平凡,行行代码显乾坤;
  • 相关阅读:
    《程序员代码面试指南》第八章 数组和矩阵问题 数组排序之后相邻数的最大差值
    《程序员代码面试指南》第八章 数组和矩阵问题 数组中未出现的最小正整数
    《程序员代码面试指南》第八章 数组和矩阵问题 数组的partition 调整
    《程序员代码面试指南》第八章 数组和矩阵问题 不包含本位置值的累乘数组
    《程序员代码面试指南》第八章 数组和矩阵问题 打印N 个数组整体最大的Top K
    《程序员代码面试指南》第八章 数组和矩阵问题 数组中子数组的最大累乘积
    《程序员代码面试指南》第八章 数组和矩阵问题 在数组中找到一个局部最小的位置
    《程序员代码面试指南》第八章 数组和矩阵问题 子矩阵的最大累加和问题
    MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)
    MySQL 进阶3 排序查询
  • 原文地址:https://www.cnblogs.com/VisiousDragon/p/13777668.html
Copyright © 2011-2022 走看看