第一课:文件操作【剽取其一,加解密】

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

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

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

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

我们在想写文件操作时,就得用到一个文件,小编就用最简单的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”文件内写的。

posted @ 2020-10-07 15:59  邪气凛然  阅读(131)  评论(0编辑  收藏  举报