C语言-文件---@颜麓

文件

一、什么是文件
文件是指存储在外存储器上的数据的集合。

二、文件名
(1)文件路径:(2)主文件名;(3)文件后缀。
文件路径表示文件在外部存储设备中的位置。
在这里插入图片描述

三、文件的分类
ASCII文件又称为文本文件。在这种文件中,每个字节存放一个字符的ASCII码值。

二进制文件中的数据与该数据在内存中的二进制形式是一致的,其中一个字节并不代表一个字符。
四、文件缓冲区
在这里插入图片描述
ANSI C标准采用“缓冲文件系统”处理文件, 是指系统自动地为正在被使用的文件在内存中开辟一个缓冲区。当需要向外存储器中的文件输出数据时,必须先将数据送到为该文件开辟的缓冲区中,当缓冲区满以后才一起送到外存储器中。当需要从外存储器中的文件读入数据进行处理时,也首先一次从外存储器将一批数据读入缓冲区(将缓冲区充满),然后再从缓冲区中将数据逐个读出进行处理。
由此可以看出,在缓冲文件系统中,对文件的输入输出是通过为该文件开辟的缓冲区进行的,对文件中数据的处理也是在该缓冲区中进行的。

五、文件指针

定义文件类型指针的一般形式
*FILE 指针变量名;
其中指针变量名用于指向一个文件,实际上是用于存放文件缓冲区的首地址。

六、文件的操作
1)打开文件 在计算机内存中开辟一个缓冲区,用于存放被打开文件的有关信息。
2)文件处理 包括在缓冲区中读写数据以及定位等操作。
3)关闭文件 将缓冲区中的内容写回到外存(磁盘),并释放缓冲区。

1、文件的打开

fopen()函数
FILE * fopen(const char *path, const char *mode);
●path 要打开的文件的名字
●mode 以何种方式打开文件:是读还是写
功能:为需要打开的文件分配一个缓冲区,并返回该缓冲区的首地址给文件型指针变量fp。以后对文件的访问通过指针变量fp进行。
函数返回值: 如果打开文件成功,返回文件类型指针,否则返回 NULL

   r    只读    为输入打开一个文件。若指定的文件不存在,则返回空指针值NULL。
   w    只写     为输出建立一个新文件。若指定的文件已存在,则其中原有内容被删去;否则创建一个新文件。
   a    追加写    向文件尾增加数据。若指定的文件不存在,则创建一个新文件。
   r+   读写     	为读写打开一个文件。若指定的文件不存在,则返回空指针值NULL。
   w+   读写    	为读写打开一个新文件。若指定的文件已存在,则其中内容被删去;否则创建一个新文件。
   a+   读与追加写	为读与向文件尾增加数据打开一个文件。
    	若指定的文件不存在,则创建一个新文件。
        如果在后面附加“b”,则表示打开的是二进制文件,否则默认为打开的是文本文件。

2、文件的关闭

fclose()函数 int fclose(FILE *fp)
●fp 被fopen打开的文件类型指针
功能:是将由fp指向的缓冲区中的数据存放到外存文件中,然后释放该缓冲区。 当文件被关闭后,如果想再对该文件进行操作,则必须再打开它。虽然C语言允许打开多个文件,但打开的文件个数是有限的。
如果不关闭已经处理完的文件,当打开的文件个数很多时,会影响对其它文件的打开操作。因此,建议当一个文件使用完后应立即关闭它。 函数的返回值: 当顺利关闭后,返回值为0,否则返回EOF(-1)


3、向文件读写一个字符

int fputc(int c, FILE *fp);
函数功能:  将字符(ch的值)输出到fp所指向的文件中去。 
参数:fp: 文件类型的指针,指向已打开的文件
           c:   要写入的字符
返 回 值:  如果输出成功,则返回值就是输出的字符;
                 如果输出失败,则返回一个EOF。
                 
用fgetc函数从文件读入一个字符 
int fgetc(FILE *fp);

4、判文件结束

函数feof()
判文件结束函数的一般形式为    int feof(fp)   其中fp指向已打开的文件。
功能:在读fp指向的文件时判断是否遇到文件结束。如果遇到文件结束,则函数feof(fp)的返回非零值;否则返回值为0
feof()函数既可以用来判断二进制文件,也可以用来判断文本文件。

5、向文件读写一个字符串

读字符串函数   char *fgets(char *s, int size, FILE *fp);        
其中fp为文件类型的指针,指向已打开的文件;是一个字符串指针;s用于存放从文件中读取的字符数据,size是一个整型变量,也可以是整型常量或整型表达式。
功能:从指定的文件读入size-1个字符存放到由s指向的存储空间中,读入结束后,将自动在最后加一个字符串结束符‘\0’。如果成功返回s,否则返回 NULL  

6、写字符串函数

 int fputs(const char *s, FILE *fp);
其中fp为文件类型的指针,指向已打开的文件,s可以是一个字符串常量,也可以是一个指向字符串的指针,还可以是存放字符串的数组名。用于存放需要写入文件的字符数据
功能:将指定的字符串写到文件fp中。若写成功,则返回非负整数,否则返回EOF-1)。

7、向文件读写一组数据

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *fp);
功能:从指定的文件fp中读入一组数据。
ptr          存放读入数据在内存的首地址。   
size         每个数据项的字节数。              
nmemb        数据项个数。          
fp           文件类型指针,指向已打开的文件
成功:返回实际读取的个数到文件末尾返回 0
size_t fwrite(const void *buf, size_t size, size_t count,FILE *fp);
buf        输出数据的首地址。
size       每个数据项的字节数。          
count      数据项个数。         
fp         文件类型指针,指向已打开的文件。
功能:将一组数据写到指定的文件中。
成功:返回实际写入的字节数到文件末尾返回 0

8、用rewind()函数使位置指针指向文件头

void rewind(FILE *fp);   
fp  是已经打开的文件指针。
功能将文件的读写指针移动到文件的开头,此函数没有返回值。

9、用fseek()函数移动位置指针

函数原型为   int fseek(FILE *fp, long offset, int whence);
调用形式为     fseek(文件指针,位移量,起始位置)
功能:将文件的读写指针移动到指定的位置。
起始位置是指移动文件读写指针的参考位置,它有以下三个值:
    SEEK_SET0    表示文件头
    SEEK_CUR1    表示当前读写的位置
    SEEK_END2    表示文件尾
位移量是指以“起始位置”为基点,读写指针向文件尾方向移动的字
节数。这个参数的类型要求为长整型
返回值:成功返回 0 , 失败返回 -1

10、用ftell()函数测定位置指针的当前位置

long ftell(FILE *fp);
功能:得到流式文件中的当前位置,用相对于文件开头的位移量来表示。
返回值:返回当前位置,出错时返回-1L

总结

1.文件是外部介质上数据的集合。文件标识是系统查找文件的依据,包括:路径、主文件名、扩展名。
2.数据文件有两类:ASCII文件和二进制文件。
3.为每一个使用的文件在内存中开辟文件缓冲区。
4.文件的指针是指向FILE类型数据的,具体指向某一文件的开头。
5.文件使用的步骤:打开、操作、关闭。具体操作是通过指向文件的指针变量来完成的。
6.对文件读写的两种方式:顺序读写、随机读写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值