首页 > 其他分享 >C语言中的at+;wt+;rt+;wb+;是什么意思

C语言中的at+;wt+;rt+;wb+;是什么意思

时间:2024-01-24 15:24:27浏览次数:25  
标签:rt 文件 wb 字符 二进制 读写 C语言 打开 ASCII

这些都是C语言打开文件函数fopen的一个参数打开文件方式的值:

定义函数 FILE * fopen(const char * path,const char * mode);

函数说明

参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

mode有下列几种形态字符串:

r 打开只读文件,该文件必须存在。

r+ 打开可读写的文件,该文件必须存在。

rb+ 读写打开一个二进制文件,只允许读写数据。

rt+ 读写打开一个文本文件,允许读和写。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

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 值。

计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别不在于物理存储上,而是逻辑上的不同。即编码格式的不同,文本文件用的是字符编码,例如ASCII编码(定长),二进制文件是基于值编码,用的是二进制的方式来存放数据的(变长)。
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

  ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
ASC码:  00110101 00110110 00110111 00111000
     ↓     ↓    ↓    ↓
十进制码: 5     6    7    8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。

  二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。
一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符'/n',而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

 

标签:rt,文件,wb,字符,二进制,读写,C语言,打开,ASCII
From: https://www.cnblogs.com/FBsharl/p/17984738

相关文章

  • Unity3D Rts游戏里的群体移动算法是如何实现的详解
    前言实时战略(RTS)游戏是一种以管理和控制虚拟军队为主题的游戏类型。在这类游戏中,玩家需要控制大量的单位进行战斗、资源采集和建设等操作。其中,群体移动算法是实现这些操作的关键之一。本文将详细介绍Unity3DRTS游戏中群体移动算法的实现原理和代码实现。对惹,这里有一个游戏开......
  • Using classes exported from a DLL using LoadLibrary
    UsingclassesexportedfromaDLLusingLoadLibraryAnup.VRateme: 4.94/5(67votes)25Jan20056minread 368.5K    10.8K    129    41AnarticleonloadingaDLLexplicitlyusingLoadLibraryandusingthecla......
  • “哄女友挑战”上线即爆火,两天烧掉 10 亿 token,AI 已通关丨 RTE 开发者日报 Vol.133
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • fail: Microsoft.Extensions.Hosting.Internal.Host[11] Hosting failed to sta
    docker发布.net8项目#使用.NET运行时镜像作为最终镜像FROMmcr.microsoft.com/dotnet/runtime:8.0#设置工作目录WORKDIR/app#复制项目文件到工作目录COPY./appENVASPNETCORE_URLS="http://*:8003"ENVASPNETCORE_HTTP_PORTS=""#设置入口点ENTRYPOINT["dotn......
  • cannot import name ‘compare_ssim‘ 解读
    不能导入'compare_ssim'的解决方法当在Python中编写图像处理代码时,可能会遇到ImportError:cannotimportname'compare_ssim'的错误。这个错误通常是由于无法导入compare_ssim函数而引起的。本文将介绍导致此错误的可能原因,并提供解决方案。问题原因compare_ssim函数是用于计算结......
  • 升级openssh后出现xshell、CRT等工具无法连接问题
    描述:某工程在进行ssh漏洞修复过程中升级openssh后输入用户名密码被拒绝(如下图)通过带外重定向到操作系统发现日志出现PAMunabletodlopen和 PAMaddingfaultymodule的报错经排查发现是ssh rpm包升级后会修改/etc/pam.d/sshd文件(如下图)和其他服务器对比,正常可登录的/etc......
  • SecureCRT、putty等远程工具连接openkylin
    一、配置服务器root@sky9890:~#apt-getinstallssh#安装root@sky9890:~#systemctlrestartsshroot@sky9890:~#vi/etc/ssh/ssh_config#配置......Port22#启用端口号,并可以修改端口数......二、问题描述SecureCRT、putty等远程工具连接openkylin报......
  • ERROR:Only one ConfirmCallback is supported by each RabbitTemplate] with root cau
     错误:OnlyoneConfirmCallbackissupportedbyeachRabbitTemplate]withrootcause 原因:因为Spring的Bean默认都是单例;而RabbitTemplate对象同样支持一个回调。 解决:使用@Scope("prototype")可通知Spring将被注解的Bean变为多例。代码: //改Ra......
  • 便捷生成官方证件照:Passport Maker AI 为你提供完美解决方案
    引言在申请护照、签证或身份证时,我们经常需要一张符合规定的照片。PassportMakerAI是一款在线工具,旨在帮助用户轻松创建符合130多个国家尺寸和背景要求的护照、签证和身份证照片。本文将深入介绍PassportMakerAI的功能和作用。PassportMakerAI的作用1.轻松创建官方证......
  • Kubernerts - 概览
    1.KubernertsK8s,是用于自动部署、扩容和管理容器化应用程序的开源系统1.1特性自动化上线与回滚分步骤针对应用或者配置更改上线,监控应用的运行状态同时不会终止所有实例,若出现问题,则可以回滚服务发现与负载均衡为每个POD提供一个IP,并为一组POD提供一个DNS名称,在P......