C语言-11、文件

文件

(一)文件的概念
1、文件:文件是外存上数据的集合。
2、文件的分类:
①文本文件(ACSCII文件):每个字符存储到文件中/
②二进制文件:以二进制存储
C语言中对文件的存取以字符(字节)为单位
3、文件类型指针
FILE就是文件类型名,它是一个结构体类型,对一个文件的操作,通过文件的指针进行
FILE *fp,*in,*out;

学习文件的12个函数
(1)fopen()------打开文件
(2)读写8个函数------指针读写后自动下移 
(3)fclose()------关闭文件
(4)文件定位指针

//文件类型指针
FILE *fp, *in, *out;

(二)文件的打开与关闭
1、文件的打开(fopen()函数)
格式:fopen(文件名, 文件使用方式)
功能:按指定的"使用方式"打开类型,函数返回所打开文件的指针,该指针的基类型为文件类型,
文件名和文件使用方式均为字符串。

打开文件的“使用方式”(小写字母)
"r"---------只读,打开已存在的文件,如过文件不存在,则失败,返回NULL
"w"-------刷新写,创建写,如果文件不存在则新创建一个文件
"a"(append)---------追加写,文件不在创建写
"+"---------增强功能
"a+"
"rb"
"wb"
"ab"
"rb+"
"wb+"
"ab+"
(加了b则表示二进制文件,无b则为文本文件)

//以只读的方式打开文件data.txt,并用指针变量fp指向它
FILE *fp;
fp = fopen("data.txt", "r");
if((fp = fopen(文件名, 文件使用方式))== NULL){
		printf("can not open this file\b");
		exit(0);
}

2、文件的关闭(fclose()函数)
文件使用完后应该关闭该文件

//格式:fclose(文件指针)
FILE *fp;
fclose(fp)

(1)fputc()----字符
格式:fputc(字符,文件指针)
功能:把一个字符写到文件指针所指的文件中,其中字符可以是字符常量也可以是字符变量
。若输出成功则函数返回输出的字符,若失败则返回EOF(stdio.h文件定义为-1)

(2)fgetc()----字符
格式:fgetc(文件指针)
功能:从文件指针所致文件中读取一个字符。若读取成功则函数返回读取的字符,失败(遇到文件结束)则
返回EOF

(3)fgets()------字符串
格式:fgets(str, n, fp);
功能:其中str表示一个字符指针,可以是字符数组名也可以是字符指针变量名。从fp所指文件中读取n-1个字符(不是n个字符)
并再这些字符的最后加一个字符串结束符'\0'后赋给str
函数返回str的首地址

(4)fputs()------字符串
格式:fputs(str, fp)
功能:向fp所指文件中写(输出)str中的字符串,str可以是字符串常量、字符数组或字符指针变量
再输出是字符串的结束符'\0'不输出,若输出成功则返回0,失败返回EOF

(5)fread()、fwrite()-------这两个函数按二进制的方式进行读写----
格式:
fread(buffer, size, count, fp);
fwrite(buffer, size, count, fp);  
其中:
buffer是数据的地址
size是每次读写的字符数
count表示让函数进行多少次的读写
fp是要进行读写的文件指针变量
功能:用来读写一个连续的数据块
注意:这两个函数按二进制的方式进行读写

(6)fprintf()、fscanf()-----格式
格式:
fprintf(文件指针,格式说明符,输出列表);
printf(格式说明符,输出列表)
fscanf(文件指针,格式说明符,输入列表);
scanf(格式说明符,输入列表);
功能:按格式说明符所指定的格式向文件中读写(输入输出)数据。其中格式说明符和输入/输出列表
的用法与scanf和printf函数相同。

补充:feof(文件指针)
作用是测试文件的当前读写位置是否在文件的末尾,若是则返回非0值(真),否则返回0(假)

//文件没有到末尾就要一直读下去
FILE *fp;
while(!feof(fp)){

}

(四)文件当前读写位置函数
(1)重新定位指针
格式:rewind(文件指针)
作用:使当前的读写位置重新指向文件的开头,函数无返回值

(2)fseek()
格式:fseek(文件指针,位移量(长整型100L),起始点)
位移量:要在数值后加字母l或者L。
功能:将当前的读写位置从"起始点"开始按"位移量"所指定的移动字节数向后移动
起始点右:
      SEEK_SET   或 0 :表示文件的开始
      SEEK_CUR  或1:表示当前位置
      SEEK_END  或2:表示文件末尾

//将位置指针定位到离文件头50个字节的地方
FILE *fp;
fseek(fp, 50L, 0);

//将位置指针定位到离文件尾50个字节的地方
FILE *fp;
fseek(fp, -50L, 2);

//将位置指针定位到离文件头0个字节的地方
fp = fopen();//方法1
rewind(fp);//方法2
fseek(fp, 0L, 0);//方法3

(3)ftell()
格式:ftell(文件指针)
功能:返回当前文件的位置,用相对于文件头的位移量表示。若文件返回-1L表示出错

#include<iostream>
#include<cstdio>

using namespace std;

int main(){
	
	int file_length;
	FILE *fp;
	fp = fopen();
	
	fseek(fp, 0L, 2);
	flie_length = ftell(fp);
	fclose(fp);
	return 0;
} 

(4)exit()
功能:关闭当前打开的文件,结束程序运行

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值