文件操作与数据流

一.为什么使用文件

1.保存数据

如果没有文件,我们编写的程序和数据均储存在电脑的内存中,退出程序时这些内存都会还给操作系统,为了长久地存储数据,我们使用文件保存

二.文件是什么

1.文件的定义

磁盘或者硬盘上的文件称为文件,文件可分为两类,即程序文件数据文件,本次学习主要学习操作数据文件。

2.二进制文件和文本文件

文本文件:存储文本信息,以ASCII码字符形式存储的文件被称为文本文件

二进制文件:数据在内存中以二进制形式存储,如果不加以任何转化直接输出到文件中,被称为二进制文件,下面以二进制形式将数字100输入文件内

int main()
{
	int a = 100;
	FILE* pf = fopen("test.txt", "wb");
	fwrite(&a, 4, 1, pf);
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	
	fclose(pf);
	pf = NULL;

	return 0;
}

三.文件操作

1.简单流程

打开文件——读写文件——关闭文件

2.数据流

数据流是一个抽象的概念,我们在进行文件操纵时是在流中读取,输出数据,不需要考虑它如何与外部设备串联,提高了操作文件的效率,我们通常使用FILE*进行文件操作

3.文件指针

在每个被使用的文件中,都会创建一个相应的文件信息区,用来存放文件的各种数据,它是一种FILE类型的结构体,用FILE*进行访问,我们可以通过文件指针间接访问文件

4.fopen函数和fclose函数

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

其中file name为文件名,mode为文件打开方式,具体如下

1、“r”以只读方式打开一个文件;若文件不存在,报错

2、“w”以只写方式打开一个文件;若文件不存在创建一个同名文件

3、“a”打开一个文件追加;

4、“rb”以只读方式打开一个二进制文件;

5、“rw”以只写方式打开一个二进制文件;

6、“ra”打开一个二进制文件追加;

7、"r+"以读写方式打开一个文件;

8、“w+”以读写方式建立一个文件;

9、“a+”以读写方式打开一个文件追加;

10、“rb+”以读写方式打开一个二进制文件;

11、“wb+”以读写方式建立一个二进制文件;

12、“ab+”以读写方式打开一个二进制文件追加。

int main()
{
	
	FILE* pf = fopen("test.txt", "wb");//打开文件
	
	if (pf == NULL)
	{
		perror("fopen");//如果创建失败,返回错误信息
		return 1;
	}

	
	fclose(pf);//关闭文件
	pf = NULL;

	return 0;
}

5.文件顺序读写(fgetc fputc fgets fputs)

a.fputc:按字符输入数据

nt fputc ( int character, FILE * stream );
int main()
{
	
	FILE* pf = fopen("test.txt", "wb");
	
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	fputc('a', pf);//读入字符
	fputc('b', pf);
	fputc('c', pf);
	fclose(pf);
	pf = NULL;

	return 0;
}

b.在逐字输入后,我们用fgetc函数逐字输出

int fgetc ( FILE * stream );
int ch = '0';
while ((ch = fgetc(pf)) != EOF)

{
	printf("%c ", ch);
}

c.fputs整行输入

int fputs ( const char * str, FILE * stream );

d.fgets整行输出

char * fgets ( char * str, int num, FILE * stream );

其中num为最大读取数,会包含'\0',因此要设置合理

fgets输出时自带输出'\n'

*未完待续*

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值