C文件操作

C语言文件操作

  • 一,文件的概念
    • 1.为什么使用文件
    • 2.什么是文件
  • 二,文件的打开和关闭
    • 1.文件指针
    • 2.文件打开和关闭
  • 三,文件的读写
    • 1.顺序读写
    • 2.随机读写
  • 四,文件的格式
    • 1.二进制文件
    • 2.文本文件
  • 五,文件缓冲区

一,文件的概念

1.为什么使用文件

在我们写程序时,程序中的数据是存放在内存中的,当程序退出时数据会丢失。如果想要保存下数据,就要把数据存放到磁盘和数据库中。使用文件就可以将数据存放在磁盘中。

2.什么是文件

磁盘上的文件是文件。
在程序设计中,一般说的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)

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

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

  3. 文件名
    文件名包含3部分:文件路径+文件名主干+文件后缀
    例如: D:\code\test.txt

二,文件的打开和关闭

1.文件指针

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”

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

定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。通过文件指针变量能够找到与它关联的文件。

2.文件打开和关闭

文件在读写之前要先打开文件,在使用结束之后要关闭文件

在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。

C文件操作_第1张图片
在这里插入图片描述

文件的使用方式:
C文件操作_第2张图片

看下面代码:

//打开文件
FILE *pf = fopen("myFile.txt","w");
//使用文件
//...
//关闭文件
fclose(pf);

三,文件的读写

1.顺序读写

顺序读写所用的函数

C文件操作_第3张图片

2.随机读写

在这里插入图片描述
根据文件指针的位置和偏移量来定位文件指针

代码示例:

int main ()
{
  FILE * pFile;
  pFile = fopen ( "example.txt" , "wb" );
  fputs ( "This is an apple." , pFile );
  fseek ( pFile , 9 , SEEK_SET );
  fputs ( " sam" , pFile );
  fclose ( pFile );
  return 0;
}

结果:

This is a sample.

C文件操作_第4张图片
返回文件指针相对于起始位置的偏移量

代码示例:

int main ()
{
  FILE * pFile;
  long size;

  pFile = fopen ("myfile.txt","rb");
  if (pFile==NULL) perror ("Error opening file");
  else
  {
    fseek (pFile, 0, SEEK_END);   // non-portable
    size=ftell (pFile);
    fclose (pFile);
    printf ("Size of myfile.txt: %ld bytes.\n",size);
  }
  return 0;
}

在这里插入图片描述
让文件指针的位置回到文件的起始位置

代码示例:

int main ()
{
  int n;
  FILE * pFile;
  char buffer [27];

  pFile = fopen ("myfile.txt","w+");
  for ( n='A' ; n<='Z' ; n++)
    fputc ( n, pFile);
  rewind (pFile);
  fread (buffer,1,26,pFile);
  fclose (pFile);
  buffer[26]='\0';
  puts (buffer);
  return 0;
}

四,文件的格式

1.二进制文件

数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件.
在这里插入图片描述
这两个函数就是用来二进制文件的读写

2.文本文件

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件.

五,文件缓冲区

文件缓冲区(File Buffer)是计算机系统中用于处理文件的一种内存区域。它是在内存中分配的一块存储区域,用于临时存放文件数据。当程序需要读取或写入文件时,数据通常会先被读取到文件缓冲区中进行处理,然后再从缓冲区中写入到磁盘上的文件,或者从缓冲区中读取数据到程序中。

文件缓冲区的存在主要是为了提高文件读写的效率。相比于直接读写磁盘上的文件,通过使用文件缓冲区可以减少与磁盘的交互次数,从而提高数据访问速度。当程序请求读取文件时,文件系统会将一部分文件数据读取到文件缓冲区中,并返回给程序。程序可以在缓冲区中进行数据处理,而不必每次都直接读取磁盘上的文件。同样地,当程序请求写入文件时,数据首先会被写入到文件缓冲区中,然后再由文件系统将缓冲区中的数据写入到磁盘上的文件中。

文件缓冲区还可以通过批量读取和写入的方式进一步提高效率。通过一次性读取或写入多个数据块,可以减少磁盘访问的开销,从而提高整体的文件读写性能。

你可能感兴趣的:(c语言,开发语言)