C语言文件操作

你好,我是史丰源
欢迎你的来访,希望我的博客能给你带来一些帮助。

我的Gitee: 代码仓库 ☀️
我的联系方式:
QQ:1756786195
邮箱:Marksky126@outlook.com🌐

一、为什么使用文件

我们思考一个小问题:如果登录某一个系统,每次开机都要输很多指令,那是不是会很麻烦呢?
但是如果有一个系统帮助我们保存开机所要输入的指令,我们会方便很多。
所以我们今天来介绍:文件操作。

二、什么是文件

磁盘上的文件就是文件。
在C语言中,我们有两种文件:程序文件、数据文件。

2.1 程序文件

程序文件:源程序文件(.c),目标文件(.obj),可执行文件(.exe).

2.2 数据文件

程序运行时读写的数据,在本节中,我们重点讲解数据文件的知识。

2.3 文件名

文件名是一个文件的标识,比如我们人人都有名字。
一般我们在找文件时,也会附上文件的路径
在C语言中,我们这样定义:

c:\\code\\test.txt;

注意:我们讲过转义字符\ \ 才是一个’ \ ’

三、文件的打开和关闭

3.1 文件指针

文件指针:又称文件类型指针。
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件名、文件状态、文件当前的位置等),这些信息都保存在一个结构体变量中。
此结构体变量名为FILE.
FILE示例1
此图为VS2019 FILE的定义。
但是不同的编译器对于FILE有不同的定义,并且平时我们也不深究FILE内部到底是什么。
所以大家了解即可,不必关心细节。

我们看到FILE结构体内有一个void*,一般我们都是通过FILE的指针来维护FILE结构的变量,所以我们推出了文件指针这个概念。

创建一个文件指针

FILE *pc;

pc可以指向FILE类型数据,可以让pc指向文件的某个信息区(比如名称、路径等),通过文件信息区的信息就可以访问该文件。

3.2 文件的打开和关闭

  1. fopen(文件的打开)
    fopen
FILE *pc = fopen("test.txt","r");//只读方式打开
下表是文件的打开方式:

文件打开方式

2. fclose(文件的关闭)

fcolse
一个文件的标准关闭程序:

fclose(pc);
pc=NULL;

四、文件的顺序读写

4.1 对比一组函数:

scanf/fscanf/sscanf:
fscanf:从文件中读取

fscanf遇到空格和换行时结束,注意空格时也结束。
fscanf

FILE *fc;
char a[10];
int b;
double c;
fscanf(fc,"%s%d%lf",a,&b,&c);
sscanf:从指定字符串输入。

sscanf

char str[512] = {0};
sscanf("123456 ", "%s", str);
printf("str=%s\n", str);

一篇大佬写的博文:scanf/fscanf/sscanf详解

printf/fprintf/sprintf

fprintf:
fprintf(fp, “%d”, buffer); 是将格式化的数据写入文件
fprintf进行写入时,一位占一个字节
fprintf
大家可以看到fprintf与sprintf的形参分别与fscanf和sscanf相对应。
所以他们可以类比记忆。
sprintf:
将格式化的数据写入字符串.
sprintf

sprintf(s, "%d", 123);   //产生“123″

五、文件的随机读写

5.1 fseek(根据文件指针的位置和偏移量来定位文件指针)

fseek

int main ()
{
   FILE *fp;
   fp = fopen("file.txt","r");
   int ch = fgetc(fp);
   fseek( fp, 2, SEEK_CUR );//现在位置读取
   ch = fgetc(fp);
   printf("%c\n",ch);
   fclose(fp);
   fp=NULL;
   return(0);
}

演示1
演示2

seek

5.2 ftell(告诉我们文件指针相对于起始位置的偏移量)

ftell

#include<stdio.h>
int main()
{
	FILE* fp;
	fp = fopen("file.txt", "r");
	int ch = fgetc(fp);
	fseek(fp, 0, SEEK_END);
	int size=ftell(fp);
	printf("%d\n", size);
	fclose(fp);
	fp = NULL;
	return(0);
}

示例3
演示2

5.3 rewind(让指针返回文件的起始位置)

rewind

int main()
{
	FILE* fp;
	fp = fopen("file.txt", "r");
	int ch = fgetc(fp);
	fseek(fp, 0, SEEK_END);
	rewind(fp);
	int size = ftell(fp);
	printf("%d\n", size);
	fclose(fp);
	fp = NULL;
	return(0);
}

演示4
演示2

写在最后,坚持空杯心态,坚持做有意义的事。

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值