C语言第十三天---------------------文件操作

文件:有限的信息的集合。是计算机的信息存储单位

文件的操作步骤:通过如下API将信息写入到文件中(外存中),将文件中的信息读取到电脑中

1、打开:FILE* fopen(char* path,"操作方式")
		只读打开:r rb			read   binary
			如果文件路径不存在,则打开失败
		只写打开:w wb			write  binary
			如果文件不存在,则重新创建。否则截断为0打开
		可读可写:w+ r+  wb+ rb+
				都是读写打开,但是打开成功与否与上面一致。
		以追加读写打开:a+			append
		
	typedef struct
	{
			...
	}FILE;
2、操作:读/写
3、关闭:fclose

注:fopen打开成功返回文件的指针,不存在的话返回NULL;
  • “r”.为读而打开文本文件.(不存在则出错)

  • “w”.为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖)

  • “a”.为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)

  • “r+”.为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变)

  • “wb”.为写而打开二进制文件.

  • “rb”.为读而打开二进制文件

  • “ab”.为在文件后面添加数据而打开一个二进制文件.

  • “rb+”.为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置.

  • “w+”.首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失)

  • “a+”.功能与”a”相同;只是在文件尾部添加新的数据后,可以从头开始读.

  • “wb+”.功能与”w+”同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.

  • “ab+”.功能与”a+”相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.

文件的读写位置:每操作一块位置,文件的读写位置就向后偏移该长度

	long ftell(FILE*);

修改文件的位置:

	int fseek(FILE*,offset,whence);
	whence: 开始SEEK_SET   当前:SEEK_CUR   末尾:SEEK_END
	offset:偏移量  -n向左  +n向右
文件的类型:
1、文本类型 :文件以”ASCII码“个”字符“依次存放
例如:int a=123456; (a占4Byte)通过文本函数将a写入到文件中,文本是占6Byte
	 int b=123;    (b占4Byte)通过文本函数将b写入到文件中,文本是占3Byte
优点:数据直观表达
	API:
		写:
			写一个字符: fputc
			写一串信息:fputs
			格式化写入:fprintf;
		读:
			fgetc()
			fgets()		读取一行
			fscanf();
feof();//判断文件是否到末尾了,到了则返回非0
2、二进制类型:以数据的原型存放(二进制)

硬盘里面怎么存放的,他就直接复制一份过来存放,
优点:好进行操作,但不能阅读。

共同点:存放在硬盘中都是二进制
不同点:文本文件是将每个显示字符以ASCII直接存放,而二进制是以原型存放。
fwrite(void* buf,size,memb,FILE*fp);写入size长*memb次的信息buf到文件中
		返回值:写入的次数
fread(void* buf,size,memb,FILE*fp);从文件中读取size长*memb次 的长度的信息存入到buf中  
		返回值:读取的次数
		注: 这里的void* buf不一定是一个数组,这里只是需要一个地址,比如在之
前int i;    则这里需要&i  。

练习:
1、如下文本文档
用户名 密码
。。。 。。。
。。。 。。。
1.密码用户与密码是否正确。

2、做一个copy拷贝
copy 源文件 目的位置

3、在student s[5]={…}
1、以二进制存放stu.data
2、查找178以上身高有多少人
3、查找cyj,并修改信息

拓展:
1、将stu.data的信息,按身高从小到大排序(文件中)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值