【C/C++基础】文件操作:C++文本文件,二进制文件;C语言文件操作

🍉内容专栏:【C/C++要打好基础啊】

🍉本文脉络:一到四为C++文件操作,五为C语言文件操作

🍉本文作者:Melon西西

🍉发布时间 :2023.2.4

目录:一到四为C++文件操作;五为C语言文件操作

一、什么是文件

1.程序文件

2.数据文件

3.文本文件:

4.二进制文件:

5.文件名(文件标识)

二、操作文件的三大类:

 三、文本文件

 3.1 写文件步骤:

3.2文件打开方式:

 3.3读文件:与写文件步骤相似,但是读取方式较多

 四、二进制文件:打开方式要指定为  ios::binary

4.1写文件步骤 用write函数

4.2读文件  用read函数

           五、C语言关于-文件的打开和关闭

5.1文件指针(文件类型指针)

5.2文件的打开和关闭(一定一定注意文件后缀!!)

 5.文件的顺序读写


一、什么是文件

程序运行时产生的数据都属于临时数据,程序一旦运行结束就会被释放,通过文件可以将数据持久化。此处讲如何将数据放入到磁盘文件当中。

我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。

1.程序文件

包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。

程序文件、数据文件(从文件功能的角度来分类的)

2.数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

3.文本文件:

文件以文本的ASCLL码形式存储在计算机中

4.二进制文件:

文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们。

5.文件名(文件标识)

一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀
例如: c:\code\test.txt

二、操作文件的三大类:

C++中对文件操作需要包含头文件<fstream>

ofstream写操作    ifstream读操作   fstream 读写操作

 三、文本文件

 3.1 写文件步骤:

先包含头文件 #include<fstream>

创建流对象:ofstream ofs;    或者 fstream类

打开文件       ofs.open("文件途径",打开方式);

写数据           ofs<<"写入的数据";

关闭文件       ofs.close();

文件默认存放在和项目相同的路径

void test1()
{
    //包含头文件fstream
    //创建流对象
     ofstream ofs;
    //指定打开方式
     ofs.open("test.txt",ios::out);
    //写内容:
    ofs<<"今天天气真好"<<endl;
}

3.2文件打开方式:

文件打开方式可以利用操作符配合使用。

 3.3读文件:与写文件步骤相似,但是读取方式较多

先包含头文件 #include<fstream>

创建流对象:ifstream ifs;   或者fstream类

打开文件       ifs.open("文件途径",打开方式);

检查               利用is_open函数可以判断文件是否打开成功

读数据           四种方式读取

关闭文件       ifs.close();

读数据:
//第一种
    char buf[1024] = { o } ;
    while ( ifs >> buf )
   {
      cout << buf << end1 ;
   }
//第二种
   char buf[1024] = { o } ;
   while ( ifs.getline(buf,sizeof(buf) ))
  {
      cout << buf << end1;
  }
//第三种
   string buf ;
   while ( getline(ifs,buf ))
  {
       cout <<buf <<endl ;
  }
//第四种   不建议用第四种,没有前面的效率高
  char c;
  while ( (c = ifs.get()) != EOF ) // EOFend of file
  {
    cout << c;
  }

 四、二进制文件:打开方式要指定为  ios::binary

4.1写文件步骤 用write函数

#include<fstream>
#include<string>
class Person
{
   char _Name[64];  //最好用char不用string
   int _Age;
}
void test1()
{
   //创建流对象
   ofstream ofs;
   //打开文件
   ofs.open("person.txt",ios::out| ios :: binary);
   //或者合二为一 ofstream ofs("person.txt",ios::out|ios::binary);
   //写文件
   Person p={"橘橘",20};
   ofs.write(const char*)&p,sizeof(Person));
   //关闭文件
   ofs.close();
}
int main()
{
   test1();
   return 0;
}

4.2读文件  用read函数

#include<fstream>
#include<string>
using namespace std;
class Person
{
   char _Name[64];  //最好用char不用string
   int _Age;
}
void test1()
{
   //创建流对象
   ifstream ifs;
   //打开文件
   ifs.open("person.txt",ios::in| ios :: binary);
   //或者合二为一 ifstream ifs("person.txt",ios::in|ios::binary);
   //判断文件是否打开成功
   if(!ifs.is_open())
   {
      cout<<"文件打开失败"<<endl;
   }
   //读文件
   Person p;
   ofs.read((char *)&p,sizeof(Person));
   cout<<p._Name<<p.Age<<endl;
   //关闭文件
   ifs.close();
}
int main()
{
   test1();
   return 0;
}

二进制文件写完打开可能是乱码,但是正确读文件后还是正常的

五、C语言关于-文件的打开和关闭

5.1文件指针(文件类型指针)

每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息〈如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.

FILE* pf;//文件指针变量

5.2文件的打开和关闭(一定一定注意文件后缀!!)

 如果找到了这个文件就打开,如果没有找到,显示没打开的原因。

 5.文件的顺序读写

  以写的形式打开会把文件原有的内容销毁重新创建

写文件:

 

 读文件:把文件放到ch里,判断一下是否等于EOF,不等于则打印。

把结构体写入文件:


 写在最后:

博主大一学识尚浅,内容仅供参考,欢迎大家在评论区交流分享。

以后会经常发关于C/C++的学习记录,感兴趣的小伙伴可以点个关注支持一下^_^

  • 31
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值