音视频 day19 对 C 语言中的 IO 概念回顾

447 阅读2分钟

1. C 语言中的文件是什么?

  • 我们对文件的概念已经非常熟悉了,比如场景的 Word 文档、txt 文件、源文件等。文件是数据源的一种,最主要的作用的是保存数据。
  • 在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些硬件的操作,等同于对磁盘上普通文件的操作。

2. 文件操作的正确流程是什么(三大步骤)?读取文件有哪两种主流读法?

  • 打开文件 --> 读写文件 --> 关闭文件
  • 文件的两种主流读写方式:①可以一个字符一个字符的读取 ②也可以读取一整行

3. 什么是文件流?什么是输入流?什么是输出流?

在 《载入内存,让程序运行起来》一文中提到,所有的文件(保存在磁盘)都要载入内存才能处理,所有的数据必须写入文件(磁盘)才不会丢失。

  • 数据在文件和内存之间的传递过程叫做文件流,类似水从一个地方流动到另一个地方。
  • 数据从文件复制到内存的过程叫做输入流
  • 从内存保存到文件的过程叫做输出流

4. 在 C 语言中如果要改变读取或者写入文件的位置,有哪两个函数?

  • void rewind ( FILE *fp ); 将位置指针移动到文件开头
  • int fseek ( FILE *fp, long offset, int origin ); 将位置指针移动到任意位置

5. C 语言如何获取文件大小(了解)?

  • C 语言没有提供获取文件大小的函数,想要实现该功能,必须自己编写函数。
long fsize(FILE *fp){
 long n;
 fpos_t fpos;  //当前位置
 fgetpos(fp, &fpos);  //获取当前位置
 fseek(fp, 0, SEEK_END); // 让文件内部指针(位置指针)移动到文件末尾
 n = ftell(fp); // ftell() 函数用来获取文件内部指针(位置指针)距离文件开头的字节数
 fsetpos(fp,&fpos);  //恢复之前的位置
 return n;
}