一. C语言文件存取方式(输入,输出方式):
- 顺序存取
- 直接存取
二. C语言数据的两种存放方式:
- 文本文件
- 二进制文件
三. 定义文件类型指针变量一般形式:
FILE *指针变量名 例:FILE *fp;
四. 最常用的文件使用方式及其含义:
1)"r".为读而打开文本文件.(不存在则出错)
2)"rb".为读而打开二进制文件.
3)"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖)
4)"wb".为写而打开二进制文件.
5)"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)
6)"ab".为在文件后面添加数据而打开一个二进制文件.
7)"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变)
8)"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
9)"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失)
10)"wb+".功能与"w+"同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.
11)"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读.
12)"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置.
五.文件操作函数(常用):
-
打开文件:
fopen(文件名,文件使用方式); 此函数返回一个指向FILE类型的指针,调用成功返回指针, 否则返回NULL,一般使用要进行测试是否==NULL. 例:FILE *fp; fp = fopen("file","r");
-
关闭文件:
fclose(文件指针); 成功关闭,fclose返回0,否则返回EOF(-1); (如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。) 例:FILE *fp; int a; a = fopen(fp);
-
输入输出函数:
1)输出一个字符: putc(ch,fp);或fputc(ch,fp); 输出成功返回 ch 字符,否则返回EOF(-1); 2)输入一个字符: ch = getc(fp);或fgetc(fp); 从pf指定的文件中读取一个字符并返回;
-
判断文件结束函数:
feof(fp); 如果文件结束,则返回非0值,否则返回0
-
格式输入函数:
fscanf(文件指针,格式控制符串,输入项表); 和scanf函数相似,不同点在于它输入的对象是磁盘上文本文件中的数据 例如:fscanf(fp,"%d%d",&a,&b); == scanf("%d%d",&a,&b);
-
格式输出函数:
fprintf(文件指针,格式控制符串,输入项表); 和printf函数相似,不同点在于它将输出的内容按格式存放到磁盘的文本文件中 例如:fprintf(fp,"%d %d",x,y); == printf("%d %d",x,y);
-
字符串读取函数(读取文件返回字符串):
fgets(str,n,fp); 从fp所指文件中读入n-1个字符放入str为起始地址的空间内,如果在未读满n-1个字符时, 则遇到换行符或一个EOF结束本次读操作,并将str作为函数值返回.
-
字符串输出函数(输出字符串到文件):
fputs(str,fp); 功能:把str字符串读入到fp所指的文件中。函数返回一个非负值,如果发生错误则返回 EOF(-1)。
-
对象输入函数(写入文件):
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 功能:把ptr所指向的数组中的数据写入到给定流stream中。 参数:ptr:指向要被写入的元素数组的指针。 size:要被写入的每个元素的大小,以字节为单位。 返回:nmemb:元素的个数,每个元素的大小为 size 字节。 stream: 指向 FILE 对象的指针,该 FILE 对象指定了一个输出流。
-
对象读取函数(读取文件):
size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream ); 功能:从给定输入流stream读取最多count个对象到数组buffer中(相当于以对每个对象调用size次fgetc), 把buffer当作unsigned char数组并顺序保存结果。流的文件位置指示器前进读取的字节数。 参数:buffer:指向要读取的数组中首个对象的指针 size: 每个对象的大小(单位是字节) count: 要读取的对象个数 stream: 输入流
-
文件定位函数
pf: 文件指针 offset: 以字节为单位的位移量,为长整形. origin: 是起始点,用来指定位移量是以哪个位置为基准的.
1) fsee(pf,offset,origin);
功能:移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始。
SEEK_SET 0 文件开始
SEEK_END 2 文件末尾
SEEK_CUR 1 文件当前位置2) ftell(pf);
功能:获得文件当前位置指针的位置,给出当前位置指针相对于文件开头的字节数。
出错时,函数返回-1L
例:测文件长度 long t;
fseek(fp,0L,SEEK_END);
t=ftell(fp);3)rewind(pf);
无返回值,使文件的位置指针回到文件开头。