C语言(文件操作)

一、FILE

在计算机中 ,所有的变量 、数组、结构体、指针.........都是使用内存去保存数据,每一个变量都有自己所占的内存,FILE就是文件的结构体类型,每一个文件的创建都伴随这个结构体的变量生成

二、文件的打开和关闭以及结尾标识

1.打开文件

FILE* fopen(const char* filename,const char* mode)

filename:绝对路径/相对路径

mode:操作权限

返回这个文件的结构体指针 供程序员进行使用这个结构体指针进行操作文件

2.关闭文件

fclose(FILE* stream)

stream:fopen 返回的结构体指针 要使用fclose进行关闭

3.判断文件结尾标识

feof(文件的指针)

判断上次获取的值是否为结尾 是结尾返回1 不是结尾返回0

cs 复制代码
//feof 对指针获取的值进行判断 如果是结尾的话返回1 不是结尾返回0
			while (1) {
				char ch = fgetc(p);
				if (feof(p)==1)break;
				printf("%c", ch);
			}

4.rewind

指针回到开头,从头开始依次获取文件数据

二、从文件读取数据

1.fgetc

fgetc 从文件中获取一个字符 此时这个指针向后挪
**注意事项:**获取到字符则返回该字符的ASCII值 未获取到字符 则返回EOF(-1)

cs 复制代码
			while (1) {
				char ch = fgetc(p);
				if (ch == EOF)break;
				printf("%c", ch);
			}

2.fgets

fgets 从文件中获取一串字符 以\n结尾 并且将\n也读取出来并且在\n后添加\0
注意事项: 获取成功返回字符串指针 获取失败返回NULL

cs 复制代码
	char arr[128];
	while (1) {
		char* ch = fgets(arr, sizeof(arr), p);
//从p中获取一串字符直到\n作为结尾 无\n则获取第二个参数 给到arr
		if (ch == NULL)break;
		printf("%s", arr);
	}

3.fscanf

fscanf 从文件中读取 相关格式的数据

  • fscanf(p,"%s",arr) 从文件获取给arr
  • scanf("%s",arr) 从键盘获取给arr
cs 复制代码
fscanf(p, "%s %d %s %lf", tulun2508[len].arr,&tulun2508[len].age, tulun2508[len].sex, &tulun2508[len].sorce);

三、给文件输入数据

1.fputc

fputc 给文件输入一个字符
**注意事项:**输入成功的话 返回输入字符的ASCII值 输入失败 则返回EOF(-1)

cs 复制代码
fputc('a', p);

2.fputs

fputs 给文件输入一个字符串
**注意事项:**输入成功则返回1 输入失败则返回EOF(-1)

cs 复制代码
fputs("庆历四年春,\n滕子京谪守巴陵郡。\n越明年,\n政通人和,\n百废俱兴,\n乃重修岳阳楼增其旧制", p);

3.fprintf

fprintf 给文件中按格式输入

cs 复制代码
fprintf(p,"%s %d %s %.2lf\n", tulun2508[i].arr, tulun2508[i].age, tulun2508[i].sex, tulun2508[i].sorce);
相关推荐
CHHH_HHH4 分钟前
【Linux系统篇】深入解析Linux文件系统:从磁盘寻址到软硬链接
linux·服务器·开发语言·后端·ubuntu
yngsqq12 分钟前
窗体快速取消
java·开发语言
XiaQ091941 分钟前
Linux 常用命令学习笔记(用户管理篇):用户、组与权限的钥匙
linux·开发语言·笔记·学习
不可求~1 小时前
C++ 报错交给 AI 之前,先准备好这 8 类信息
开发语言·c++·人工智能
LuminousCPP1 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode
名字还没想好☜1 小时前
用 Python struct 解析二进制协议:pack/unpack、字节序与对齐踩坑
开发语言·python·二进制·struct
一知半解仙1 小时前
当机器人学会泛化,而我在写Java:一名后端开发者的2026年8月21日观察手记
java·开发语言·机器人
流浪0011 小时前
C/C++ 后端筑基系列(一):C语言 —— 从基础到进阶系统指南
c语言
青 春 记 忆2 小时前
LeetCode 155. 最小栈|Python 解法详解
开发语言·python·leetcode
剩下了什么10 小时前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang