此篇文章主要对C语言中的" 文件读写函数 "进行详细的刨析~通过此篇文章能够了解并学习到:" 字符读写函数 "," 文本行读写函数 "," 格式化读写函数 "," 二进制读写函数 "," 文件随机读取函数 "," 读取结束原因函数 "等相关知识~
(上一篇:文件基础知识传送门:C语言的文件基础知识-CSDN博客)
文件使用方式表:
文件使用方式 | 含义 | 如指定文件不存在 |
" r "(只读) | 为了输入数据,打开一个已经存在的文本文件 | 出错 |
" w "(只写) | 为了输出数据,打开一个文本文件 | 建立一个新文件 |
" a "(追加) | 像文本文件尾添加数据 | 建立一个新文件 |
" rb "(只读) | 为了输入数据,打开一个二进制文件 | 出错 |
" wb "(只写) | 为了输出数据,打开一个二进制文件 | 建立一个新文件 |
" ab "(追加) | 向一个二进制文件尾添加数据 | 出错 |
" r+ "(读写) | 为了读和写,打开一个文本文件 | 出错 |
" w+ "(读写) | 为了读和写,建立一个新的文件 | 建立一个新文件 |
" a+ "(读写) | 打开一个文件,在文件尾进行读写 | 建立一个新文件 |
" rb+ "(读写) | 为了读和写,打开一个二进制文件 | 出错 |
" wb+ "(读写) | 为了读和写,新建一个新的二进制文件 | 建立一个新文件 |
" ab+ "(读写) | 打开一个二进制文件,在文件尾进行读和写 | 建立一个新文件 |
一、文件的打开与关闭
① 文件的打开函数
在我们编写程序,想要实现对文件的读写前,我们需要先打开一个文件,我们可以看到fopen的参数:filename 是文件名,其代表的就是想要进行操作的对应文件(有时文件并不在程序中,我们可以将此处替换成此文件的绝对路径)。
mode 代表的是文件的打开模式,文件的打开模式:
(文件打开成功时,返回文件起始位置的文件指针;文件打开失败时,返回空指针NULL!!!)
测试代码:
int main()
{
FILE* pf = fopen("data.txt", "w");
if (pf == NULL)
{
perror("fopen");
return 1;
}
return 0;
}
注意!!!!!!
在我们使用fopen去打开一个文件时,为了安全,我们要判断接收文件指针的变量pf是否为空(也就是判断文件是否成功被打开~),如果打开失败,则输出错误原因,并退出此次运行。
这段代码...是不是少了些什么呢?(注意参考动态内存管理中的内存开辟...此代码只"打开"了,但没有"关闭"~)
知道了!既然我们打开了一个文件,相应的就需要关闭文件~
② 文件的关闭函数
此函数的作用就是用于关闭文件。
FILE* stream 指的是想要关闭的文件。
(关闭文件后,需要将pf置空,否则pf会变成危险的野指针!!!)
(就像之前学习动态内存管理时,使用free释放内存后,需要再置空一次~)
那么既然了解了文件的打开与关闭,让我们将两者融合,练习一下~:
int main()
{
FILE* pf = fopen("data1.txt", "w");
//检查是否打开失败
if (pf == NULL)
{
perror("fopen");
return 1;
}
fclose(pf);
//防止pf变成野指针
pf = NULL;
}
注意:在我们运行此代码之前,我的电脑中是没有"data1.txt"文件的。
而当我们运行代码后,再进行查看,会发现文件中出现了"data1.txt"。
这是因为 " w " 在查找不到目标文件时,就会创建一个新文件,并且命名为目标文件的名字。
而当我们将此文件删除,再使用 " r " 来读取该文件会发生什么呢:
没错,就是报错(找不到该文件)
(如果我们将文件 "data1.txt" 存入其他的文件路径中,那么对 "data1.txt" 的读取是否能够成功呢?)
我们可以看到,这种情况下是无法找到该文件的,那么这时我们就不能找到这个文件了吗?答案是,可以找到~因为此时我们输入的文件名并不完整,所以它找不到另一个文件路径中的该文件,此时我们可以将全部文件名写入:"data1.txt"—>"D:\\data1.txt"
(正常是一个\,写\\会防止\与后面字符结合)
此时我们可以看到,再次进行文件的查找,就能够找到了~
二、文件的顺序读写函数
顺序读写函数表:
功能 | 函数名 | 适用于 |
字符输入函数 | fgetc | 所有输入流 |
字符输出函数 | fputc | 所有输出流 |
文本行输入函数 | fgets | 所有输入流 |
文本行输出函数 | fputs | 所有输出流 |
格式化输入函数 | fscanf | 所有输入流 |
格式化输出函数 | fprintf | 所有输出流 |
二进制输入 | fread | 文件 |
二进制输出 | fwrite | 文件 |
① 字符输出函数 fputc
我们可以看到,fputc函数有两个参数:
int character:代表想要写入文件的字符。
FILE* stream:代表操作的目标文件。
fputc函数的作用:将character代表的字符写入文件stream中,并将位置标识符向前移动。
标签:文件,txt,函数,int,C语言,pf,fopen From: https://blog.csdn.net/ixiaotang_/article/details/142407652