2024年2月8日发(作者:)
C语言函数fopen
函数简介
函数功能:打开一个文件
函数原型:FILE * fopen(const char * path,const char * mode);
相关函数:open,fclose,fopen_s,_wfopen
所需库:
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
参数说明:
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
[1]
Visual C++ 在生成过程中编写并使用许多的文件。 本文讲述 Visual C++ 项目中常用的文件扩展名。
Visual C++ 中使用的文件
.C -- C 语言源文件:
这种文件是作为 C 文件编译的。 如果其中包含 C++ 代码,必须将文件扩展名重命名为 .CPP 或 .CXX 文件,或在编译文件时使用 /Tp 命令开关。 如果资源文件包含 C++ 代码,Microsoft 建议将文件扩展名重命名为 .CPP 或 .CXX 扩展名。
.CPP 或 .CXX -- C++ 语言源文件:
这种文件是作为 C++ 文件编译的。 如果要作为 C 文件编译它(假设源文件中没有 C++
代码),必须将这种文件重命名为 .C 文件(推荐使用),或在编译该文件时使用 /Tc 命令开关。
.H、.HPP、或 .HXX -- 头文件:
头文件常用于函数原型、类定义或常量定义。 .H、.HPP、或 .HXX 文件可以包含在多个源文件中。
.INL -- 内嵌函数文件:
这种文件包含内嵌函数定义。
.RC 或 .RC2 -- 资源文件:
这种文件包含有项目的资源信息,如对话框、菜单栏或字符串表的说明。 这种文件是用资源编译器 () 编译的。 使用 Visual C++ 的 AppWizard 生成 MFC (Microsoft
Foundation Classes) 应用程序时,将得到应用程序的 .RC 文件。 .RC 文件可以使用资源编辑器或 App Studio 进行修改或创建。 在某些 Visual C++ 版本中,您会发现 .RC2 文件也包含资源信息。
.DEF – 模块定义文件:
根据项目类型,这种文件有两种用途。 在基于 Windows 和 Windows NT 的程序中,这种文件用于指定导出的函数列表、控制程序堆栈大小、指定特殊段的属性等等。 对于基于
MS-DOS 的 MOVE 重叠程序(仅 16 位产品才有),这种文件用于指定段或函数所在的重叠程序。
由 Visual C++ 创建的文件
.APS – 二进制资源文件:
这种文件是二进制的当前资源文件。 App Studio 或资源编辑器使用该文件进行快速加载。
.BSC – 浏览器数据库文件:
为每个项目创建一个 .BSC 文件。 要使用浏览器,需要在 Visual C++ Workbench 中打开该文件。 这种文件是在运行 BSCMAKE 工具时通过 .SBR 文件创建的。
.CLW -- 类向导状态文件:
这种文件保存消息处理函数在代码中存储位置的信息。 这种文本文件的格式没有成文规定,但是可以重新生成这种文件。 有关如何重新生成这种文件的详细信息,请在 App Studio 中单击 Help 菜单上的 Contents 项,然后单击“Using Class Wizard” 和“Update Class Wizard
when Code Changes”。
.EXE 或 .DLL -- 可执行文件或动态链接库文件:
这种文件是用于项目的最终链接输出文件。 其中包含可执行代码。
.ILK (仅 2.0 版或更高版本才有)-- 递增链接信息文件:
链接器创建这种文件允许在可能时执行递增链接。 如果删除这种文件,链接器必须执行全链接。
.OBJ – 对象模块文件:
这是编译器中最终的输出文件。 链接器将这些文件组合在一起以创建最终的 .EXE、.DLL
或 .LIB 文件。 .OBJ 文件在不同版的 Visual C++ 中或不同供应商的编译器中有不同的格式。
.PCH – 预编译头文件:
这些文件可以大大提高编译速度。 它们是在使用 /Yc、/Yu 或 /YX 编译器选项时创建的。
.PDB – 程序数据文件:
这种二进制文件中包含编译和链接项目时所收集的类型和符号调试信息。 这种文件用于
Visual C++ 调试器。 对象文件包含 .PDB 文件中有关调试信息的一些参考。 这种设计减小了对象文件的大小。 有关其它信息,请参见 /Zi 命令开关下的联机参考。 使用 /Z7 命令开关时,并不创建这种文件。
.SBR – 资源浏览器文件:
可以为每个使用 /FR 或 /Fr 命令开关编译的资源文件创建这种文件。 这种文件中包含
Microsoft Browser Database Maintenance Utility (BSCMAKE)(Microsoft 浏览器数据库维护实用工具)创建浏览数据库文件(BSC 文件)时所使用的符号信息。
.WSP -- 工作空间信息文件(仅 16 位版本才有):
这种文件是二进制文件,其中包含 WorkBench 关闭时的状态信息。 如打开的资源文件以及其窗口位置这些项均保存在这种文件中。
.VCP -- 工作空间信息文件(仅 Visual C++ 2.x 以及更高版本才有):
这种文件是与 16 位版本的 .WSP 文件相对等的 Visual C++ 2.x 版文件。
.VCW -- Visual WorkBench 状态文件(仅 16 位版本才有):
这种文件是基于每个项目创建的。 它使用 .MAK 文件向 WorkBench 全面描述项目。
.EXP -- 导出文件:
导出文件包含有关导出函数和数据项的信息。 LIB 创建导入库时,它也创建导出文件。 当链接从另一个程序中导出或导入的程序时,可以直接或间接使用 .EXP 文件。 如果使用 .EXP 文件进行链接,LINK 不会生成导入库,这是因为它假设 LIB 已经创建一个导入库。
.LIB -- 库文件:
这些文件可以是标准库或导入库文件。 标准库包含对象,而且是由 LIB 工具创建的。 导入库包含其他程序中的导出信息,它要么是在生成包含导出信息的程序时由 LINK 创建,要么由 LIB 工具创建。
.MAP -- 映射文件:
映射文件是包含被链接程序信息的文本文件。 所含信息包括模块名、来自程序文件(而不是文件系统)头文件的时间戳以及程序中的组列表(其中包含每组的起始地址、长度、组名和类)。此外,还包括公共符号列表及其各自的地址、符号名、完全地址和定义符号的对象文件。 映射文件也包含程序的输入点以及修正列表。
.RES – 已编译的资源文件:
.RES 文件是由资源编译器 (RC) 创建的。
.HPJ – 上下文相关帮助项目文件:
使用 Visual C++ AppWizard 创建支持上下文相关帮助的 MFC 应用程序时,将产生这种文件。 需要使用 .HPJ 文件,通过使用 AppWizard 生成的 .RTF 文件和 .BMP 文件创建帮助文件。
NCB – 分析器信息文件:
这种文件包含分析器生成的信息,分析器用于类视图和组件库。 如果这种文件被有意或无意删除,它会自动重新生成。
MDP -- Microsoft Developer studio 项目文件:
这种文件替代 Visual C++ 版本 2.x 的 .VCP 文件。 .MDP 文件包含的项目信息比 .VCP
文件包含的信息要多。
RCT -- 资源模板文件:
这些文件包含插入资源时可用的自定义资源的信息。 它可以包括菜单、工具栏、位图以及任何其它在 Insert Resource 菜单中列出的资源类型。
在生成过程中创建而后又删除的其它文件
在生成过程中,还有两种其它文件由 Visual C++ IDE 创建。 正常环境中,应当删除这些文件。 这些文件是:
.CRF -- 链接器响应文件:
该文件是在生成过程中随时创建的。
-- 项目 .CRF 文件的副本:
该文件是在资源需要绑定到可执行文件时创建的。它只是项目的 .CRF 文件的副本。 根据项目所支持的功能,还创建一些其它文件。 例如,项目可能有一个或多个带 .ICO 扩展名的图标文件、带 .CUR 扩展名的光标文件或带 .BMP 扩展名的位图文件。 项目也可能有包含项目注册表信息的 .REG 文件。 支持 OLE 的项目也可能有 .ODL 文件和 .TLB 文件。
文件使用方式
意义
“ rt ”
只读打开一个文本文件,只允许读数据
“ wt ”
只写打开或建立一个文本文件,只允许写数据
“ at ”
追加打开一个文本文件,并在文件末尾写数据
“ rb ”
只读打开一个二进制文件,只允许读数据
“ wb ”
只写打开或建立一个二进制文件,只允许写数据
“ ab ”
追加打开一个二进制文件,并在文件末尾写数据
“ rt+ ”
读写打开一个文本文件,允许读和写
“ wt+ ”
读写打开或建立一个文本文件,允许读写
“ at+ ”
读写打开一个文本文件,允许读,或在文件末追加数据
“ rb+ ”
读写打开一个二进制文件,允许读和写
“ wb+ ”
读写打开或建立一个二进制文件,允许读和写
“ ab+ ”
读写打开一个二进制文件,允许读,或在文件末追加数据
1
| 评论
本文发布于:2024-02-08 15:13:28,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170737640867852.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |