C语言文件操作(二)
创始人
2024-05-21 14:38:12
0

文件的随机读写

fseek函数
#include int main()
{FILE* pf = fopen("test.txt", "r");if (NULL == pf){perror("fopen");return 1;}char ch = fgetc(pf);printf("%c\n", ch);fseek(pf, 2, SEEK_SET);ch = fgetc(pf);printf("%c\n", ch);return 0;
}

fseek的作用是调整文件读取的位置

ftell函数

ftell函数是用来计算偏移量的,偏移量可以知道下次文件读取的读取位置

#include int main()
{FILE* pf = fopen("test.txt", "r");if (NULL == pf){perror("fopen");return 1;}char ch = fgetc(pf);printf("%c\n", ch);fseek(pf, 4, SEEK_SET);ch = fgetc(pf);printf("%c\n", ch);int tmp = ftell(pf);printf("%d\n", tmp);return 0;
}

计算的偏移量为5

rewind函数

rewind函数的作用是回到文件的起始位置

文本文件和二进制文件

数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件

数据在内存中以ASCII码的形式存储的文件就是·文本文件,在存储的时候需要转换。

二进制存储大家一定很熟悉了

ASCII码形式的存储是怎么回事

ASCII形式的存储就是存数据的ASCII码

文件读取结束的判定

fgetc结束返回EOF

fgets结束返回NULL

fread结束返回一个值,这个值小于要读取的个数

被误解的feof函数

feof是用来判断文件读取结束得时候,是遇到文件结尾结束的,还是读取失败结束的。

用if+feof判断文件读取结束,是读取失败,还是到文件结尾结束的

if(feof)如果是真说明是到文件结束

if(ferror)如果是真说明是读取失败然后文件结束的

文件缓冲区

ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序

中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装

满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓

冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根

据C编译系统决定的。

在C语言文件操作的时候我们需要刷新缓冲区,如果不做可能导致文件的读写失败

我们fclose关闭文件的时候可以刷新缓冲区,我们也可以通过fflush函数刷新缓冲区

我们的测试代码为

#include 
#include 
//VS2019 WIN11环境测试
int main()
{FILE* pf = fopen("test.txt", "w");fputs("abcdef", pf);//先将代码放在输出缓冲区printf("睡眠10秒-已经写数据了,打开test.txt文件,发现文件没有内容\n");Sleep(10000);printf("刷新缓冲区\n");fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到文件(磁盘)//注:fflush 在高版本的VS上不能使用了printf("再睡眠10秒-此时,再次打开test.txt文件,文件有内容了\n");Sleep(10000);fclose(pf);//注:fclose在关闭文件的时候,也会刷新缓冲区pf = NULL;return 0;
}

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...