超详细C语言文件操作知识点

超详细C语言文件操作知识点文章目录文件的打开文件的一般打开方式文件的关闭文件的读 写字符输入 输出函数字符输出函数 fputc 字符输入函数 fgetc 文件结束检测函数 feof 字符串输入 输出函数字符串输入函数 fgets 字符串输出函数 fputs 文件的格式化输入 输出函数格式化输入函数 fscanf 格式化输出函数 fprintf 文件的数据块输入 输出函数数据块输入函数 fread 数据块输出函数 fwrite

文件的打开


mode字符串对应的操作模式:

读写方式 文件类型 含义 读写方式 文件类型 含义
“r” 文本文件 打开文本,只读 “rb+” 二进制文件 打开二进制文件,读、覆盖写
“w” 文本文件 建立文本文件,只写 “wb+” 二进制文件 打开二进制文件,先写后读
“a” 文本文件 打开文本文件,追加 “ab+” 二进制文件 打开二进制文件,读,追加
“rb” 二进制文件 打开二进制文件,只读 “rt” 文本文件 打开文本文件,只读
“wb” 二进制文件 建立二进制文件,只写 “wt” 文本文件 建立文本文件,只写
“ab” 二进制文件 打开二进制文件,读、追加 “at” 文本文件 打开文本文件,追加
“r+” 文本文件 打开文本文件,读、覆盖写 “rt+” 文本文件 打开文本文件,读、覆盖写
“w+” 文本文件 打开文本文件,先写后读 “wt+” 文本文件 打开文本文件,先写后读
“a+” 文本文件 打开文本文件,读、追加 “at+” 文本文件 打开文本文件,读、追加


文件的一般打开方式

fopen()函数打开文件有可能失败。如用“r”模式打开不存在的文件,此时会返回一个空指针NULL。则程序无法继续输入/输出数据。故需要在打开文件时判断是否有错。

FILE *fp; if((fp=fopen(filename,mode))==NULL) { 
       printf("打开文件错误!\n"); exit(1);/*由exit函数终止程序运行。*/ } 

文件的关闭

文件的读/写

字符输入/输出函数

字符输出函数fputc()


字符输入函数fgetc()


文件结束检测函数feof()


字符串输入/输出函数

字符串输入函数fgets()


字符串输出函数fputs()

文件号 文件指针 标准文件
0 stdin 标准输入设备(键盘)
1 stdout 标准输出设备(显示器)
2 stderr 标准错误设备(显示器)
3 stdaux 标准辅助设备(辅助设备端口)
4 stdprn 标准打印(打印机)

文件的格式化输入/输出函数

格式化输入函数fscanf()


格式化输出函数fprintf()


文件的数据块输入/输出函数

数据块输入函数fread()


数据块输出函数fwrite()


fread()和fwrite()读/写的最小单位是字节,而fscanf()和fprintf()的读/写数据基本单位是以类型为单位的数据对象。so,fread()和fwrite()更适合处理二进制文件,而fscanf()和fprintf()则更适合处理的都是文本文件。

在读取二进制文件时不能用EOF作为文件标志,要用feof函数判断文件是否结束。因为-1可能是一个有效数据。


整数输入/输出函数

getw 函数(只适用于二进制文件)


putw 函数(适用于二进制文件)

文件的定位操作

ftell函数


fseek函数

from的值 from的宏名 表示文件的位置
0 SEEK_SET 文件头
1 SEEK_CUR 读/写当前位置
2 SEEK_END 文件尾

例如:

fseek(fp,50L,SEEK_SET);//将读写指针移动到离文件头50个字节处 fseek(fp,100L,1);//将读写指针移动到离当前位置100个字节处 fseek(fp,-20L,2);//将读写指针移动到离文件末尾处20个字节处。 

rewind函数

重点
·用rewind()函数可以将文件指针移到文件头,函数执行成功则返回0值,否则返回非0值。
·用ftell()函数可以返回文件指针的当前位置;返回值为long,是相对于文件头头的字节数,出错时返回-1L.
·用fseek()函数可以移动文件指针到指定位置。如果一个二进制文件中存放的是若干个结构体数据,则可以使用fseek()和ftell()函数来确定文件的长度n(字节数)以及文件中包含的数据块个数k。
例如:
fseek(fp,0L,SEEK_END);//将指针移动到文件尾
n=ftell(fp);//取当前字节数赋值给n
k=n/sizeof(struct st);
·只要一个文件中的各个数据项具有相等的长度,则该文件即可以顺序存取,也可以随机存取。
















版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202033.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:02
下一篇 2026年3月20日 上午8:02


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号