fopen 中的 r 和 rb 有什么区别

2024-10-10 09:28:00
admin
原创
214
摘要:问题描述:我尝试在 C 中使用 fopen,第二个参数是打开模式。“r”和“rb”这两个模式让我很困惑。它们似乎是一样的。但有时最好使用“rb”。那么,为什么存在“r”?请详细解释一下或举例说明。谢谢。解决方案 1:您应该使用"r"打开文本文件。不同的操作系统存储文本的方式...

问题描述:

我尝试在 C 中使用 fopen,第二个参数是打开模式。“r”和“rb”这两个模式让我很困惑。它们似乎是一样的。但有时最好使用“rb”。那么,为什么存在“r”?请详细解释一下或举例说明。谢谢。


解决方案 1:

您应该使用"r"打开文本文件。不同的操作系统存储文本的方式略有不同,这将执行正确的转换,这样您就不需要了解本地操作系统的特性。例如,您会知道换行符将始终显示为简单的`"
"`,无论代码在何处运行。

如果您打开非文本文件,则应使用"rb",因为在这种情况下,翻译不合适。

解决方案 2:

在 Linux 和 Unix 上,"r""rb"是相同的。更具体地说,在文本模式和二进制模式下FILE通过fopen()ing 文件获得的指针在 Unix 上的行为相同。在 Windows 上,以及通常在使用多个字符表示“换行符”的系统上,以文本模式打开的文件的行为就像所有这些字符都只是一个字符一样`'
'`。

如果您想在任何系统上可移植地读取/写入文本文件,请使用中的"r"和。这将保证文件被正确写入和读取。如果您要打开二进制文件,请使用和,这样不幸的换行符转换就不会弄乱您的数据。"w"`fopen()"rb""wb"`

请注意,底层系统为您执行换行符转换的结果是,您无法确定使用fseek(file, 0, SEEK_END)从文件中读取的字节数。

最后,请参阅comp.lang.c 常见问题解答中的文本和二进制 I/O 之间有什么区别?。

解决方案 3:

使用“rb”打开二进制文件。这样读取文件的字节时就不会被编码

解决方案 4:

  • 对于翻译模式, “r”与“rt”相同

  • “rb”是非翻译模式。

至少在 Windows 上,这会产生影响。请参阅该链接了解详细信息。

解决方案 5:

在大多数 POSIX 系统上,它会被忽略。但请检查您的系统以确保无误。

西努克大学

模式字符串还可以包含字母“b”,作为最后一个字符或作为上述任何双字符字符串中字符之间的字符。这完全是为了与 ISO/IEC 9899:1990(“ISO C90”)兼容,并且不起作用;“b”被忽略。

Linux

模式字符串还可以包含字母“b”,作为最后一个字符或上述任何双字符字符串中的字符之间的字符。这完全是为了与 C8​​9 兼容,并且没有任何效果;“b”在所有符合 POSIX 的系统(包括 Linux)上都被忽略。(其他系统可能会以不同的方式处理文本文件和二进制文件,如果您对二进制文件进行 I/O 并且希望您的程序可以移植到非 UNIX 环境,则添加“b”可能是一个好主意。)

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1495  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1344  
  IPD(Integrated Product Development)流程是一套先进的产品开发管理体系,旨在通过整合跨部门资源,实现产品的高效开发与交付。在IPD流程中,确保项目按时交付是至关重要的,它直接关系到企业的市场竞争力和客户满意度。以下将从多个关键方面探讨如何在IPD流程阶段确保项目按时交付。精准的项目规划项...
IPD流程分为几个阶段   6  
  IPD(Integrated Product Development)流程是一套先进的产品开发管理体系,旨在缩短产品上市时间、提高产品质量、降低成本并增强企业的市场竞争力。深入理解IPD流程阶段的关键要素,对于企业成功实施IPD,实现产品开发的高效运作至关重要。IPD流程的概念与重要性IPD流程强调将产品开发视为一个整...
IPD测试流程   6  
  IPD(Integrated Product Development)产品开发流程是一套先进的、旨在提高产品开发效率与质量的管理体系。在这个体系中,评审环节起着至关重要的作用,它们如同关卡,确保产品在各个阶段都朝着正确的方向前进,符合市场需求和企业战略。其中有四个评审环节尤为关键,它们分别在不同阶段对产品进行全面审视,...
研发IPD流程   10  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用