简述C语言文件操作

简介: 简述C语言文件操作

为什么要使用文件?

要将数据持久化保存


文件

文件功能分类,文件分为两种:

程序文件数据文件


程序文件

后缀名为①.c  ②.obj  ③.exe

数据文件

文件的内容不一定是程序,而是程序运行读写的数据

如:程序运行时要从中读取数据文件内容/输出内容文件

根据数据的组织形式,数据文件被称为文本文件二进制文件

文本文件

数据在内存中以二进制形式储存,不加转换输出到外存

二进制文件

数据在外存以ASCII码形式存储,在存储前转换(以ASCII字符的形式存储的文件)

一个数据在内存中怎么储存的呢?

在下面👇 “文件的打开和关闭” 讲到


文件名

文件名包含三部分:

文件路径 + 文件名主干 + 文件后缀

⽂件的打开和关闭


流和标准流

一图 KO 流 概念

标准流

C语⾔程序在启动的时候,默认打开了3个流:

stdin-标准输入流,在大多数的环境中从键盘输⼊,

scanf函数就是从标准输入流中读取数据。

stdout-标准输出流,大多数的环境中输出至显示器界面,

printf函数就是将信息输出到标准输出流中。

stderr-标准错误流,大多数环境中输出到显示器界面。

文件指针

运行程序时,默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进行输入输出操作的。

stdin、stdout、stderr 三个流的类型是: C语⾔中,就是通过 FILE* ,通常称为文件指针

FILE* 的⽂件指针来维护流的各种操作的。

该结构体类型是由系统声明的,取名FILE.

通过文件指针变量能够间接找到与它关联的文件

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

文件的打开和关闭

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

mode打开方式

文件的打开模式

文件使用方式 含义 如果指定文件不存在
"r"(只读) 为了输入数据,打开一个已经存在的文本文件 出错
"w"(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
"a"(追加) 向文本文件尾添加数据 建立一个新的文件

函数使用

#include<stdio.h>
 
int main()
{
  //文件指针变量读写文件
  // 当前文件位置
  //FILE* pf = fopen("data.txt", "w");
 
  //当前文件位置
  FILE* pf = fopen("./data.txt", "w");
 
 
  //当前文件的上一级位置
  //FILE* pf = fopen("./../data.txt", "w");
 
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
 
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}


文件的顺序读写


文件顺序读写函数

函数名 功能 适用于
fgetc 字符输入函数 所有输入流
fputc 字符输出函数 所有输出流
fgets 文本行输入函数 所有输入流
fputs 文本行输出函数 所有输出流
fscanf 格式化输入函数 所有输入流
fprintf 格式化输入函数 所有输出流
fread 二进制输入 文件
fwrite 二进制输出 文件

函数原型

回到上面的 “二进制文本” 提到的问题

一个数据在内存中怎么储存的呢?

int main()
{
  int a = 100;
 
  //文件指针变量打开文件
  FILE* pf = fopen("Data.txt", "wb");
 
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
 
  //以二进制方式写入文件
  fwrite(&a, 4, 1, pf);
 
  //关闭文件
  fclose(pf);
  pf = NULL;
 
  return 0;
}

内存中以二进制显示:

用的比较多的是fputc

fputc

函数使用

int main()
{
  //文件指针打开文件
  FILE* pf = fopen("Data.txt", "w");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
 
  //输入数据读写文件:26个字母
  //int i = 0;
  //for (i = 0; i < 26; i++)
  //{
  //  fputc('a' + i, pf);
  //  fputc('\n', pf);
  //}
  
  //控制台输出stdout
  int i = 0;
  for (i = 0; i < 26; i++)
  {
    fputc('a' + i, stdout);
    fputc('\n', stdout);
  }
 
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}


文件的随机读写


fseek

函数介绍

函数使用

int main()
{
  //文件指针打开文件
  FILE* pf = fopen("Data.txt", "r");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
 
  //读写文件
  int ch = fgetc(pf);
  printf("%c\n", ch);
 
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  fseek(pf, 3, SEEK_SET);
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}

控制台显示

ftell

函数介绍

int main()
{
  //文件指针打开文件
  FILE* pf = fopen("Data.txt", "r");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
 
  //读写文件
  int ch = fgetc(pf);
  printf("%c\n", ch);
 
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  int n = ftell(pf);
  printf("%d\n", n);
 
 
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}

控制台显示

rewind

函数介绍

作用:返回文件起始位置(文件开头)

函数使用

int main()
{
  //文件指针打开文件
  FILE* pf = fopen("Data.txt", "r");
  if (pf == NULL)
  {
    perror("fopen");
    return 1;
  }
 
  //读写文件
  int ch = fgetc(pf);
  printf("%c\n", ch);
 
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  rewind(pf);
 
  ch = fgetc(pf);
  printf("%c\n", ch);
 
  //关闭文件
  fclose(pf);
  pf = NULL;
  return 0;
}

控制台输出

目录
相关文章
|
15天前
|
存储 C语言
C语言文件操作(2)
【10月更文挑战第2天】
|
13天前
|
程序员 编译器 C语言
C语言底层知识------文件操作
本文详细介绍了文件操作的基本概念,包括文件的分类(程序文件和数据文件,其中着重于数据文件的文本文件和二进制文件),流的概念及其在C程序中的应用,以及标准输入输出流stdin、stdout和stderr的作用。作者通过示例展示了如何使用fopen、fclose和常见的读写函数如fgetc、fputc和fgets进行文件操作。
14 2
|
1月前
|
C语言
C语言——文件操作
本文介绍了文件的基本操作,包括文件的打开、关闭、读取和写入。使用`fopen`函数以不同模式(如“r”、“w”等)打开文件,并通过`fclose`关闭。文章详细解释了如何利用`fputc`、`fputs`及`fprintf`进行格式化写入,同时介绍了`fgetc`、`fgets`和`fscanf`用于文件内容的读取。此外,还涵盖了二进制文件的读写方法以及如何通过`fseek`、`ftell`和`rewind`实现文件的随机访问。
44 1
C语言——文件操作
|
16天前
|
存储 缓存 编译器
文件操作——C语言
文件操作——C语言
|
11天前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
16天前
|
存储 程序员 编译器
C语言文件操作(1)
【10月更文挑战第1天】
|
16天前
|
存储 C语言
C语言的文件操作
C语言的文件操作
13 0
|
18天前
|
存储 移动开发 Unix
C 语言文件操作详解
C 语言文件操作详解
|
1月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
C语言
【C语言篇】文件操作(下篇)
因为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂ 件。如果不做,可能导致读写⽂件的问题。
45 2