提示:在计算机科学中,文件是数据的基本存储单元,它们可以包含文本、图像、视频、音频等多种形式的数据。
目录
前言
在计算机科学中,文件是数据的基本存储单元,它们可以包含文本、图像、视频、音频等多种形式的数据。文件操作是编程中的一项基础且关键技能,无论是对于初学者还是经验丰富的开发者。本文档旨在介绍C语言中文件的基本操作,包括文件的打开、读取、写入和关闭等过程。
17.1 文件-基本介绍
文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的 word 文档,txt 文件,excel 文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音...
17.1.1 文件在程序中是以流的形式来操作的。
1) 流:数据在数据源(文件)和程序(内存)之间经历的路径
2) 输入流:数据从数据源(文件)到程序(内存)的路径
3) 输出流:数据从程序(内存)到数据源(文件)的路径
17.1.2 相关函数在 stdio.h
C 标准库 - stdio .h 该头文件定义了三个变量类型、一些宏和各种函数来执行输入和输出, 在开发过程中,可以来查询。
17.2 C 输入 & 输出
1) 当我们提到输入时,这意味着要向程序写入一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要写入到程序中。
2) 当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。C 语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中
17.3 标准文件
1) C 语言把所有的设备都当作文件。所以设备(比如显示器)被处理的方式与文件相同。以下三个文件会在程序执行时自动打开,以便访问键盘和屏幕
2) 文件指针是访问文件的方式,我们会讲解如何从屏幕读取值以及如何把结果输出到屏幕上。
3) C 语言中的 I/O (输入/输出) 通常使用 printf() 和 scanf() 两个函数。scanf() 函数用于从标准输入(键盘)读取并格式化, printf() 函数发送格式化输出到标准输出(屏幕)
4) 案例演示, 将内容输出到屏幕
|
17.4 getchar() & putchar() 函数
1) int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。
2) int putchar(int c) 函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符
3) 应用实例:程序会读取一个单一的字符
|
17.5 gets() & puts() 函数
1) char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF。
2) int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到 stdout。
3) 应用实例: 程序读取一整行直到该行结束
|
17.6 scanf() 和 printf() 函数
1) int scanf(const char *format, ...) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。
2) int printf(const char *format, ...) 函数把输出写入到标准输出流 stdout ,并根据提供的格式产生输出。
3) format 可以是一个简单的常量字符串,但是您可以分别指定 %s、%d、%c、%f 等来输出或读取字符串、整数、字符或浮点数。还有许多其他可用的格式选项,可以根据需要使用。如需了解完整的细节,可以查看这些函数的参考手册。现在让我们通过下面这个简单的实例来加深理解
4) 应用实例:您输入一个文本并按下回车键时,程序读取输入, 但是要求格式要匹配
|
17.7 C 文件读写
1) 讲解了 C 语言处理的标准输入和输出设备。我们将介绍 如何创建、打开、关闭文本文件或二进制文件。
2) 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。本章将讲解文件管理的重要调用
17.8 打开文件
使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:FILE *fopen( const char * filename, const char * mode );
1) 说明:在这里,filename 是字符串,用来命名文件,访问模式 mode 的值可以是下列值中的一个
2) 如果处理的是二进制文件(图片,视频..),则需使用下面的访问模式: "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b","ab+", "a+b" //b :binary 二进制
3) 函数的说明
17.9 关闭文件
关闭文件,使用 fclose( ) 函数。函数的原型如下:
int fclose( FILE *fp );
1) 如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h 中的常量。
2) C 标准库提供了各种函数来按字符或者以固定长度字符串的形式读写文件。
3) 使用完文件后(读,写),一定要将该文件关闭
17.10写入文件
下面是把字符写入到流中的函数
int fputc( int c, FILE *fp );
说明:函数 fputc() 把参数 c 的字符值写入到 fp 所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。您可以使用下面的函数来把一个以 null 结尾的字符串写入到流中:int fputs( const char *s, FILE *fp );
说明:函数 fputs() 把字符串 s 写入到 fp 所指向的输出流中。如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。您也可以使用 int fprintf(FILE *fp,const char *format, ...) 函数来写把一个字符串写入到文件中
Ø 代码演示
|
17.11读取文件
下面是从文件读取单个字符的函数
int fgetc( FILE * fp );
说明:fgetc() 函数从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF。
下面的函数从流中读取一个字符串:
char *fgets( char *buf, int n, FILE *fp );
1) 说明:函数 fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。
如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。
2) 也可以使用 int fscanf(FILE *fp, const char *format, ...) 函数来从文件中读取字符串,但是在遇到第一个空格字符时,它会停止读取。
3) 代码演示
|
总结
通过本文档的学习,我们对C语言中的文件操作有了全面的了解。从文件的基本概念到具体的读写操作,每一步都是构建高效、稳定程序的基础。掌握了文件操作,我们就能够处理各种数据输入输出任务,无论是简单的文本处理还是复杂的数据存储。
附录
参考:【尚硅谷C语言零基础快速入门教程-哔哩哔哩】 https://b23.tv/vS3vTDp