C语言文件操作以及文件操作函数详解

什么是文件:

我们对文件的概念已经非常熟悉了,比如常见的 Word 文档、txt 文件、源文件等。文件是数据源的一种,最主要的作用是保存数据。

文件操作:

操作文件的正确流程为:打开文件 --> 读写文件 --> 关闭文件。文件在进行读写操作之前要先打开,使用完毕要关闭。

编程操作 :

FILE *file; //定义FILE结构体指针变量,这个指针指向的FILE结构体的内存空间是系统自动分配的.

file = fopen(“文件路径”,“文件打开方式”); 打开使用完过后记得关闭fclose(文件指针);

返回值 : 执行成功返回FILE结构体指针,出错返回NULL.

注意:一般是不会同时进行写入和读取

打开方式描述
“r”以只读方式打开文件,文件必须存在.
“r+”以可读写的方式打开文件,文件必须存在.
“w”以只写方式打开文件,文件不存在则创建;文件存在则擦除文件中的内容.
“w+”以可读写的方式打开文件,文件不存在则创建;文件存在则擦除文件中的内容.
“a”以只写方式打开文件,文件不存在则创建;文件存在则新内容从文件内容末尾开始写入.
“a+”以可读写方式打开文件,文件不存在则创建,文件存在则新内容从文件内容末尾开始写入.

文件操作基本函数说明

fputc:

fputc('字符',文件指针);向文件中输入一个字符
char c='Y'; fputc(c,file);

fgetc:

fgetc(文件指针);从文件中获取一个字符
	fgetc(file);这个函数有一个返回值,可以用变量去接受,也可以直接输出

fputs:

fputs("字符串",文件指针);向文件中输入一串字符
	char s[100]="asdf";fputc(s,file);

fgets:

fgets(字符数组,要读取字符的大小,文件指针);获取一个字符串
	char s[100]; fgets(s,100,file);这样就把文件里面的字符串赋值给了字符数组s

fprintf:

fprintf(文件指针,"格式占位符",变量名);向文件中写入格式化的数据
typedef struct student
{
	int id;
	char name[20];
}STU;//定义结构体
	STU stu[3] = { 1, "asd", 2, "qwe", 3, "zxc" };//结构体数组
	for (int i = 0; i < 3; i++)
{
	fprintf(file, "id是:%d  name是:%s\n", stu[i].id, stu[i].name);//格式化写入到文本里面
}

fscanf:

fscanf(文件指针,"格式占位符",变量);//从文件中获取格式化的数据
	STU stu[3] = { 0 };//定义结构体数组来保存从文件读取到的元素
	for (int i = 0; i < 3; i++)//从文本里面读取到结构体数组里面
	{
		fscanf(file, "id是:%d  name是:%s\n", &stu[i].id, stu[i].name);
	}
	for (int i = 0; i < 3; i++)//输出
	{
		printf("id是:%d  name是:%s\n", stu[i].id, stu[i].name);
	}

fseek:

fseek(file,偏移量,位置(SEEK_END);//偏移量是正数就是往后移动,是负数就是往前移动

位置描述符描述
SEEK_CUR文件内部指针当前位置
SEEK_END表示文件末尾
SEEK_SET文件开头

fseek(file, 2, SEEK_CUR);//文件指针从当前的位置往后面移动了两个单位

ftell:

int off=ftell(fp);得到文件内部指针相对于文件(从文件开头的位置)的偏移量

EOF:

EOF 文件末尾的标志

char c;

while((c=fgetc(file))!=EOF)//这样循环用来判断是否读到文件末尾

frewind:

rewind(fp);//将文件内部指针移回文件开头

fwrite:

fwrite(需要写进去字符数组, 数据类型的大小,数据的个数, 文件指针);向文件中写入数据

fread:

fread(用来保存的字符数组,数据类型的大小,数据的个数,文件指针);从文件中获取格式化的数据

特别提醒:操作完之后记得关闭文件

fclose(文件指针)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值