文件操作知识总结

本文详细介绍了C语言中关于文件操作的知识,包括如何打开和关闭文件,读取和写入文件内容,以及相关的函数使用,如fopen、fclose、fgetc、fputc等。还讨论了标准输入输出、文件指针的移动以及错误检查和EOF的判断。

打开文件

  1. fopen(“路径与文件名(包含格式)“,”读写类型“),返回值为文件型指针

  2. r:以只读的方式打开文本文件,文件必须已存在

  3. w:以只写的方式创建并打开文本文件,已存在的文件将被覆盖

  4. a:以只写的方式打开文本文件,向文件尾部添加数据,文件必须已存在

  5. +:与以上字符结合,表示以读写的方式打开文本文件。

  6. b:与以上字符结合,表示以二进制形式打开文件。在对二进制文件进行操作时,最好加上b。不然会出现字符缺失等问题,影响移植性。

关闭文件

  1. fclose(文件指针),文件关闭成功返回值为0,否则返回非零值

获取文件中内容

  1. 获取字符,fgetc(文件指针),读取成功以整型返回该字符,读到文件末尾返回EOF(符号常量,值为-1)

  2. 获取字符串,fgets(字符串变量,int n,文件指针),可将至多n-1个字符读入字符串变量内,并在末尾加’\0’。读到回车字符或读满n-1个后返回字符串首地址。出错或到达文件尾会使读取失败,返回值为NULL。注意换行符也会被读入,与gets()不同

  3. fscanf(文件指针,“”,),与标准读入类似,只是前面加了个文件指针。但耗时较长

  4. fread(储存起始地址,数据块大小,数据块个数,文件指针),允许以数据块的方式读入文件,配合结构体使用。

写入文件的字符

  1. 字符,fputc(整型字符,文件指针),将字符写到文本文件上,返回值为整型字符,否则为EOF

  2. fprintf(文件指针,“”,),与printf()类似,只是前面加了个文件指针。但耗时较长

  3. fread(储存起始地址,数据块大小,数据块个数,文件指针),允许以数据块的方式读入文件,配合结构体使用。文件打开方式需为二进制,否则易出错。

  4. fwrite(储存起始地址,数据块大小,数据块个数,文件指针),允许以数据块的方式写入文件,配合结构体使用。文件打开方式需为二进制,否则易出错。

  5. 字符串,fputs(字符串,文件指针)。出现错误返回EOF,否则返回非负数。注意不会在结尾自动加换行符,与puts()不同

  6. fread与fwrite均会改变文件指针的指向。均指向下一个待操作字节的位置

              
FILE *fp;  

           
char ch;  

if((fp=fopen("demo.txt","w"))==NULL)  

           
{  


  。。。。。//读入文件失败  


  exit(0);  


}  


ch=getchar();  


while(ch!='\n')  


{  


  fputc(ch,fp);  


  ch=getchar()  


}  


fclose(fp);  

return 0;  

相关函数

1) feof(文件指针),判断是否到文件末尾,若到了返回值为真,否则返回值为假。与EOF判断法有些不同。feof()会通过调用上一次文件读入操作的结果来判断是否到达文件结尾。如果上一次读入出现错误,它才会返回真值。

2) ferror(文件指针),判断文件是否有错误。有则返回非0值,否则返回0值

3) fseek(文件指针,移动距离,起始位置),将文件指针从起始位置移动指定个数个字节,距离为正向后反之则前。使用成功返回0,否则返回非0。用实现跳跃读入写出。

4) rewind(文件指针),将指针指向文件首字节

5) ftell(文件指针),返回值为长整型的当前文件指针相对于文件起始位置字节的偏移位置。失败返回-1。

6) fflush(文件指针)无条件的地把缓冲区中的所有数据写入物理设备

标准输入输出:

stdin是标准输入,设备为键盘;stdout为标准输出,设备为显示屏;例如fput(x,stdout)就是向屏幕输出,与putchar()等价。但fgets中还有个长度参数,在使用标准读入字符串时不如改写为fgets(字符串变量,sizeof(字符串变量),stdin)可以防止读入数据超过字符数组长度

EOF

起始在文件结尾中EOF并不实际存在,它的出现是文件读入数据出现错误时的一个返回值。该值为-1。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值