首页 > 其他分享 >C语言的文件函数

C语言的文件函数

时间:2024-09-22 08:54:57浏览次数:3  
标签:文件 txt 函数 int C语言 pf fopen

此篇文章主要对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

相关文章

  • 函数参数的解构
    假设我在three.js中有一个项目,我需要一些几何图形,我将硬编码一个对象数组,其中包含它们的x、y和z值以及它们的宽度、高度和深度值,但是这个数组可能来自服务器或第三方api=>constgeometriesraw=[{color:0x44aa88,x:0,y:1,z:0,widt......
  • C语言-文件操作-一些我想到的、见到的奇怪的问题
    博客主页:【夜泉_ly】本文专栏:【C语言】欢迎点赞......
  • windows源码ReadFile函数的实现
    windows源码ReadFile函数的实现windows源码ReadFile函数的实现文章目录windows源码ReadFile函数的实现ReadFileReadFileBOOLWINAPIReadFile(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesToRead,LPDWORDlpNumberOfBytesRead,L......
  • 【深度学习】(3)--损失函数
    文章目录损失函数一、L1Loss损失函数1.定义2.优缺点3.应用二、NLLLoss损失函数1.定义与原理2.优点与注意3.应用三、MSELoss损失函数1.定义与原理2.优点与注意3.应用四、BCELoss损失函数1.定义与原理2.优点与注意3.应用五、CrossEntropyLoss损失函数1.定......
  • 【Python爬虫系列】_022.异步文件操作aiofiles
    课程推荐我的个人主页:......
  • python有main函数吗
    python和C++/Java不一样,没有主函数一说,也就是说python语句执行不是从所谓的主函数main开始的。当运行单个python文件时,如运行a.py,这个时候a的一个属性__name__是__main__。当调用某个python文件时,如b.py调用a.py,这个时候a的属性__name__是模块名a。a = 3 def chan......
  • 局域网用指令传文件
    以Windows和kali系统为例一、kali传Windows(1)传输端(kali):ifconfig #查看传输端IP地址python3-mhttp.server10000#10000是端口号,可以任意指定(2)接收端(Windows):certutil-urlcache-split-fhttp://192.168.0.241:10000/test.jpg#192.168.0.241是传输端IP地址#10000......
  • Python文件操作
    文件的编码编码就是一种规则集合,记录了内容和二进制间进行相互转换的规则,编码有许多种,我们最常用的是UTF-8编码常见的编码方式UTF-8:叫万国码-8bit是当前最流行的Unicode编码方式的字符集GBK:GBK向下与GB2312编码兼容,主要用于中文扩展为什么需要使用编码:计算机只......
  • Python——列表与函数的关系
    目录1.问题描述2.与Python其他序列类型比较3.与C语言比较4.结论1.问题描述Python中为方便对列表进行修改,规定列表传入函数后进行的修改是直接针对原列表所在地址的,即在函数中对传入的列表的修改是全局的、永久的。示例代码如下:deffun(list):list[0][0]=18lis......
  • 要优化WiFi 7无线网卡的性能,可以通过调整注册表来实现。下面是一些常见的优化设置,可以
    要优化WiFi7无线网卡的性能,可以通过调整注册表来实现。下面是一些常见的优化设置,可以将其保存为.reg文件:CopyCodeWindowsRegistryEditorVersion5.00;优化WiFi7无线网卡设置[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]"TcpAckFreque......