当前位置: 首页 > article >正文

文件操作

1.文件的打开和关闭


文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
ANSI C规定使用fopen函数来打开文件,

成功打开文件后, fopen 将返回一个指向 FILE 类型指针,此指针用于后续的文件操作2。如果打开失败, fopen 将返回 NULL ,并且错误代码会保存在 errno 中。


fclose 来关闭文件。

参数 stream  是指向 FILE  类型指针,指的是要关闭的文件。如果关闭成功, fclose  返回0,否则返回EOF(-1)。

//打开文件
FILE* fopen(const char* filename, const char* mode);
//关闭文件
int fclose(FILE * stream);

const char* filename表示文件名

const char* mode表示文件打开的模式

有如下几种方式

 比如我要打开道德经这个文件只读,就可以像下面这样写

int main(void)
{
	char ch = 0;
	FILE* pf = fopen("道德经全文.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	fclose(pf);
	return 0;
}

我们接下来就可以看文件的读写了。 

2.文件的顺序读写

 

 我们拿其中fgetc为例

fgetc函数简介 :
fgetc是C语言中的一个文件操作函数,用于从指定的文件中读取一个字符。该函数的声明如下:

int fgetc(FILE *stream);

其中,参数 stream 是一个指向文件指针的指针。

使用方法 :

包含头文件 :在程序中需要包含 stdio.h 头文件。
打开文件 :使用 fopen 函数打开文件,获得文件指针。例如:FILE *fp;
fp = fopen("filename.txt", "r"); 

r模式表示只读读取字符 :调用 fgetc 函数读取文件中的字符2。例如:int ch = fgetc(fp);这将读取filename.txt文件中的一个字符,并将其存储在整数变量ch中。


关闭文件 (可选):如果不再需要文件指针,可以使用 fclose 函数关闭文件。例如:fclose(fp);返回值 :

如果成功读取字符, fgetc 函数返回读取到的字符的ASCII值。
如果到达文件末尾或读取出错,返回 EOF (-1)。

EOF的全称是end of file

那么思考一下,既然fgetc和fputc可以作用于所有的流

那么是不是也可以作用于标准输入流和标准输出流

答案显然是可以的

int main(void)
{
	int ch = fgetc(stdin);//从键盘(标准输入流)上读取
	fputc(ch, stdout);//将字符输出(写)到屏幕(标准输出流)
	return 0;
}

作用和scanf和printf是差不多的。

其实通过文件的知识我们可以去尝试去做一共破损版的的电子书模拟器了

电子书模拟器(破损版一稿)-CSDN博客


http://www.kler.cn/news/309806.html

相关文章:

  • OrionX GPU算力池助力AI OCR场景应用
  • git 更换远程地址的方法
  • [产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发
  • 传感技术是如何实现实时监测和控制的呢
  • Flume:大规模日志收集与数据传输的利器
  • JAVA_15
  • 兰花种类识别系统源码分享
  • 【渗透测试】——Upload靶场实战(1-5关)
  • 怎么使用nginx把80端口代理到想要的端口?
  • 中、美、德、日制造业理念差异
  • C++学习笔记(19)
  • vue3路由基本使用
  • 283. 移动零(快慢指针)
  • Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】
  • 零基础考过软考信息系统项目管理师经验分享
  • H5依赖安装
  • 一、(JS)JS中鼠标事件-mouseenter、mouseleave和mouseover、mouseout区别
  • 使用Redis实现用户关注博客的推模式
  • Go 交叉编译
  • Jenkins部署若依项目
  • 开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略
  • 深度学习张量变换操作利器 einops 基础实践
  • 消息中间件有哪些常见类型
  • sql刷题常用函数
  • 微博计算架构实战
  • 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树
  • 【车载开发系列】ParaSoft单元测试环境配置(三)
  • 【原创】java+springboot+mysql高校社团网系统设计与实现
  • 【数据库】MySQL-基础篇-多表查询
  • 赋值运算符