C 语言(9)
9.文件操作
9.1 文件指针
定义说明文件指针的一般形式为:
FILE *指针变量标识符;
9.2 文件的打开和关闭
9.2.1 文件的打开(fopen)
fopen 函数用来打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式);
文件使用方式 |
意义 |
“rt” |
只读打开一个文本文件,只允许读数据 |
“wt” |
只写打开或建立一个文本文件,只允许写数据 |
“at” |
追加打开一个文本文件,并在文件末尾写数据 |
“rb” |
只读打开一个二进制文件,只允许读数据 |
“wb” |
只写打开或建立一个二进制文件,只允许写数据 |
“ab” |
追加打开一个二进制文件,并在文件末尾写数据 |
“rt+” |
读写打开一个文本文件,允许读和写 |
“wt+” |
读写打开或建立一个文本文件,允许读写 |
“at+” |
读写打开一个文本文件,允许读,或在文件末追加数据 |
“rb+” |
读写打开一个二进制文件,允许读和写 |
“wb+” |
读写打开或建立一个二进制文件,允许读和写 |
“ab+” |
读写打开一个二进制文件,允许读,或在文件末追加数据 |
9.2.2文件的关闭(fclose)
fclose 函数调用的一般形式是:
fclose(文件指针);
9.3 文件的读写
9.3.1 字符读写函数: fgetc 和 fputc
1) fgetc 函数的功能是从指定的文件中读一个字符,函数调用的形式为:
字符变量=fgetc(文件指针);
2) fputc 函数的功能是把一个字符写入指定的文件中,函数调用的形式为:
fputc(字符量,文件指针);
9.3.2 字符串读写函数:fgets和fputs
1) fgets函数是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:
fgets(字符数组名,n,文件指针);
其中的 n 是一个正整数。表示从文件中读出的字符串不超过 n-1 个字符。在读入的最后一个字符后加上串结束标志 '\0'。
2) fputs函数是向指定的文件写入一个字符串,其调用形式为:
fputs(字符串,文件指针);
中字符串可以是字符串常量,也可以是字符数组名,或指针变量
9.3.3 数据块读写函数: freed 和 fwrite
读数据块函数调用的一般形式为:
fread(buffer,size,count,fp);
写数据块函数调用的一般形式为:
fwrite(buffer,size,count,fp);
其中 :
buffer 是一个指针,在 fread 函数中,它表示存放输入数据的首地址。在 fwrite 函数中,它表示存放输出数据的首地址。
- size 表示数据块的字节数。
- count 表示要读写的数据块块数。
- fp 表示文件指针。
9.3.4 格式化读写函数: fscanf 和 fprinf
这两个函数的调用格式为:
- fscanf(文件指针,格式字符串,输入表列);
- fprintf(文件指针,格式字符串,输出表列);
9.4 文件的随机读写
移动文件内部位置指针的函数主要有两个,即 rewind 函数和 fseek 函数。
rewind 的调用格式为:
rewind(文件指针);
它的功能是把文件内部的位置指针移到文件首。
fseek 函数用来移动文件内部位置指针,其调用格式为:
fseek(文件指针,位移量,起始点);
“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。
9.5 文件检测函数
9.5.1 文件结束检测函数 feof 函数
调用格式:
feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值为 1,否则为 0。
9.5.2 读写文件出错检测函数
ferror 函数调用格式:
ferror(文件指针);
功能:检查文件在用各种输入输出函数进行读写时是否出错。如 ferror 返回值为 0 表示未出错,否则表示有错。
9.5.3 文件出错标志和文件结束标志置 0 函数
Clearer 函数调用格式:
clearerr(文件指针);
功能:本函数用于清除出错标志和文件结束标志,使它们为 0 值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异