流是一种以统一的方式与这些交互的抽象; 所有流都具有相似的属性,与它们所关联的物理介质的各个特征无关。 流在cstdio库中作为指向 FILE 的指针处理对象。...大多数这些属性是在流与使用 fopen 函数的文件(已打开)关联时定义的: 读/写访问 | 文字/二进制 | 缓冲 | 方向 指定流是否对与其关联的物理介质具有读取或写入访问权限(或两者)。...文本流被认为代表一组文本行,每行以新行字符结尾。根据运行应用程序的环境,可能会对文本流进行一些字符转换,以使某些特殊字符适应环境的文本文件规范。...另一方面,二进制流是从物理介质写入或读取的字符序列,没有翻译,与读取或写入流的字符一一对应。 缓冲区是一块存储器,其中数据在物理读取或写入相关文件或设备之前被累积。流可以是完全缓冲,行缓冲或无缓冲。...stdout vscanf 将格式化数据读入变量参数列表 vsnprintf 将格式化数据从变量参数列表写入一定大小的缓冲区 vsprintf 将格式化数据从变量参数列表写入字符串 vsscanf
从物理角度看,存储介质被划分为一个个小的存储单元,文件的数据就存储在这些单元中。这些存储单元通过文件系统进行管理,文件系统会记录每个文件在存储介质中的位置、大小等信息。...这是因为操作系统可能会将数据先缓存在内存中,等待合适的时机(如缓冲区满或者文件关闭时)再将数据真正写入磁盘等存储介质。所以及时关闭文件可以确保文件数据完整地保存到存储设备中。...\n"); } else { printf("读取过程中出现错误\n"); } return 0; } 首先定义了一个包含数字和字符的字符串origin_str...这个数组的大小应该足够大,以避免缓冲区溢出。 format:这是格式控制字符串,用于指定数据的输出格式。格式控制字符串的规则和printf函数类似,包含各种格式说明符和转义字符等。 ......是无缓冲的,信息会立即显示在控制台上,而不需要等待缓冲区的填充或其他触发条件。
10.1.4 文件缓冲区 所谓缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区,从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去,如果从磁盘向计算机读入数据...指向文件的指针变量并不是指向外部介质上的数据文件的开头,而是指向内存中的文件信息区的开头。...10.3.2 怎样向文件读写一个字符串 「注」: 若fgets函数执行成功,则返回值为str数组首元素的地址,如果一开始就遇到文件尾或读数据出错,则返回NULL; fputs函数的原型为int fputs...(char *str,FILE *fp),其作用是将str所指向的字符串输出到fp所指向的文件中,该函数第一个参数可以是字符串常量、字符数组名或字符型指针,字符串末尾的\0不输出,若输出成功,函数值为0...位移量指以起始点为基点向前移动的字节数,应是long型数据,即在数字的末尾加一个字母L。
实例 $ ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行。 $ grep 'test' d* 显示所有以d开头的文件中包含test的行。.../[Mm]y/ 匹配包含My或my的行 [^] 匹配不在指定字符组内的任一字符 /[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行 .... ...其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。...ARGV 包含命令行参数的数组。 CONVFMT 数字转换格式(默认值为%.6g) ENVIRON 环境变量关联数组。 ERRNO 最后一个系统错误的描述。...\w 匹配一个字母数字组成的单词。 \W 匹配一个非字母数字组成的单词。 \‘ 匹配字符串开头的一个空字符串。 \' 匹配字符串末尾的一个空字符串。
splitlines() 在换行符处拆分字符串并返回列表。 startswith() 如果以指定值开头的字符串,则返回 true。 strip() 返回字符串的剪裁版本。...sub 用字符串替换一个或多个匹配项 元字符 元字符是具有特殊含义的字符: 字符 描述 示例 [] 一组字符 “[a-m]” \ 示意特殊序列(也可用于转义特殊字符) “\d” ....则返回匹配项 “\AThe” \b 返回指定字符位于单词的开头或末尾的匹配项 r”\bain” r”ain\b” \B 返回指定字符存在的匹配项,但不在单词的开头(或结尾处) r”\Bain” r”ain...[+] 在集合中,+、*、.、\ 、()、$、{} 没有特殊含义,因此 [+] 表示:返回字符串中任何 + 字符的匹配项 示例 检索字符串以查看它是否以 “China” 开头并以 “country”...detach() 从缓冲区返回分离的原始流(raw stream)。 fileno() 从操作系统的角度返回表示流的数字。 flush() 刷新内部缓冲区。
ByteArrayOutputStream、FileOutputStream是两种基本的介质流,它们分别向Byte数组、和本地文件中写入数据。...但在另一方面,这样生成的代码不是十分容易阅读,所以使用时必须慎重。 2.顺序目录列表 经常都需要文件名以排好序的方式提供。...这种排序不要求区分大小写,所以最终不会得到一组全部单词都以大写字母开头的列表,跟着是全部以小写字母开头的列表。...然而,我们注意到在以相同字母开头的一组文件名中,大写字母是排在前面的—— 这对标准的排序来说仍是一种不合格的行为。 Java 1.2 已成功解决了这个问题。...* 该流的标记生成器可以识别标识符、数字、引用的字符串和各种注释样式。
例如,数字10转成二进制就是1010,那么数字10在计算机中就以1010的形式存储。...2 认识 Buffer Buffer 直译成中文是『缓冲区』的意思,顾名思义,在 Node.js 中实例化的 Buffer 也是专门用来存放二进制数据的缓冲区。...例如,我要创建一个内容为字符串 "20" 的 Buffer,而错误的传入了数字 20,结果创建了一个长度为 20 的Buffer 实例。 ?...同时,size 参数如果不是一个数字,会抛出 TypeError。 ?...要理解流,就必须知道管道的概念。
- 基础 IO Linux - 基础 IO 文件 IO 相关操作 stdin & stdout & stderr 系统文件 I/O 文件的宏观理解: 狭义理解: 1.文件在磁盘里 2.磁盘是永久性存储介质...str 中,直到读取 (num-1) 个字符或到达换行符或文件结尾,以先发生者为准。...所谓的默认打开文件,标准输入,标准输出,标准错误,其实是由底层系统支持的,默认一个进程在运行的时候,就打开了 0,1,2 对于进程来讲,对所有的文件进行操作,统一使用一套接口(一组函数指针),因此在...而进程执行 open 系统调用,所以必须让进程和文件关联起来。...大多是操作系统在同一个目录下是不允许存在同名文件的 删除文件不需要清空该文件占据的所有的空间数据(只需将该文件的 inode 和对应的数据块无效化即可(文件对应 inode 和 Block 位图中的数字
当然数据也可以是离散的,如符号、文字称为数字数据 在计算机系统中,数据以二进制信息单元0、1 的形式表示 在计算机科学中,数据是指所有能输入计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理...一般的,以英语文本为基础的计算机程序要经过编译、链接而成为人难以解读,但可轻易被计算机所解读的数字格式,然后放入计算机内部运行。...所谓缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。 如果从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘中的文件里面去。...参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno 的值来决定要输出的字符串。 在库函数中有个error变量,每个error值对应着以字符串表示的错误类型。...EOF以指示错误或文件结束) fgets判断是否为NULL(返回NULL表示错误或文件结束条件,使用feof或ferror来确定是否发生了错误) (2)二进制文件的读取结束判断,判断返回值是否小于实际要读的个数
(str) <<endl << sizeof("hello")<< endl << str(str)<< endl; system("pause"); return 0; } 结果: 结论:对一个数组字符串...、制表符、换行则表示结束; Unicode 字符问题 char 字符串可显示汉字,但字符不可以,字符连在一起用%c%c 可以输出一个汉字; 结构体 结构体引用方式:结构体数组名[下标].成员名; 结构体指针变量引用成员形式...; 文件处理方法 缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区和非缓冲文件系统; 低级文件系统:由用户在程序中为每个文件设定缓冲区; fscanf 和 fprintf 函数 两者遇到空格或换行时结束...;//文件流的状态,是否错误或者结束 int _file;//文件描述符 int _charbuf;//双字节缓冲,缓冲 2 个字节 int _bufsiz;//缓冲区大小 char *_tmpfname...0,不存在则建立文件,w+,wb,wb+,wt,wt+模式打开文件,文件不存在则建立文件; a 以附加的方式打开只写文件,若文件不存在,则建立文件,存在则在文件尾部添加数据,a+以附加的方式打开可读写文件
对于任何具有绝对抽象路径名的 File 对象,如果其绝对抽象路径名以某个目录的绝对路径名开头,那么该目录的绝对路径名是该 File 对象的祖先。...可用文件系统根的设置受各种系统级操作的影响,比如可移动介质的插入和弹出,以及断开或卸载那些物理磁盘或虚拟磁盘。 此方法返回一个 File 对象数组,这些对象表示可用文件系统根的根目录。...在UNIX 系统上,如果文件名以句点字符 (‘.’) 开头,则认为该文件被隐藏。在 Microsoft Windows 系统上,如果在文件系统中文件被标记为隐藏,则认为该文件被隐藏。...可用文件系统根的设置受各种系统级操作的影响,比如可移动介质的插入和弹出,以及断开或卸载那些物理磁盘或虚拟磁盘。 此方法返回一个 File 对象数组,这些对象表示可用文件系统根的根目录。...特别是,如果此 FileDescriptor 引用物理存储介质,比如文件系统中的文件,则一直要等到将与此FileDesecriptor 有关的缓冲区的所有内存中修改副本写入物理介质中,sync 方法才会返回
下面的字符类匹配除小写字母 (a-z) 或数字以外的任何字符: /[^a-z0-9]/ 必须在字符类的“开头”键入尖号 (^) 字符以表示反转。...正如如^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符串。...所以模式"^.5$"与任何两个字符的、以数字5结尾和以其他非“新行”字符开头的字符串匹配。模式"."可以匹配任何字符串,除了空串和只包括一个“新行”的字符串。...一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数。...这么看吧:与所有以一个可选的负号(\-{0,1})开头(^)、跟着0个或更多的数字([0-9]{0,})、和一个可选的小数点(\.{0,1})再跟上0个或多个数字([0-9]{0,}),并且没有其他任何东西
所有与流关联的内部缓冲区都与流分离并刷新:任何未读输出缓冲区的内容都被写入,任何未读输入缓冲区的内容都被丢弃。 即使调用失败,作为参数传递的流将不再与文件或其缓冲区相关联。 ...如果format包含格式说明符(以%开头的子序列) 那么format后面的附加参数将被格式化并插入到结果字符串中,替换它们各自的说明符。...如果这个数字与count参数不同,则在读取时发生了读取错误或到达了文件结束符。在这两种情况下,都设置了合适的指示器,可以分别用ferror和feof检查。...文件缓冲区 文件是指存储在外部存储介质上的、由文件名标识的一组相关信息的集合。由于CPU 与 I/O 设备间速度不匹配。为了缓和 CPU 与 I/O 设备之间速度不匹配矛盾。...通过磁盘缓存来实现,磁盘缓存本身并不是一种实际存在的存储介质,它依托于固定磁盘,提供对主存储器存储空间的扩充,即利用主存中的存储空间, 来暂存从磁盘中读出(或写入)的信息。
char数组的指针。...从流中读取字符,并将它们作为字符串存储到 str 中,直到读取 (num-1) 个字符或到达换行符\n或文件末尾 '\0'会被自动加入到字符串最后,文件读取时遇到'\n'也会结束,其后也会添加'\0'...注意,你需要确保str指向的缓冲区有足够的空间来存储结果字符串,否则可能会导致缓冲区溢出。...如果发生错误,fseek 返回非零值。可以使用 perror 或 strerror 函数来获取更具体的错误信息。...如果在之前的I/O操作中有错误发生(如磁盘错误、读取不存在的文件等),ferror()将返回一个非零值(通常是EOF,但这不是必须的,只是通常约定)。 如果没有错误,则返回零。 1.
; 标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的。...一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。 跟 C 语言一样的。这里我为什么要对标 C 语言?...1.5)布尔型 布尔值并不会隐式转换为数字值0或1,反之亦然。必须使用一个显式的if语句辅助转换。 1.6)字符串 一个字符串是一个不可改变的字节序列。...在一个双引号包含的字符串面值中,可以用以反斜杠\开头的转义序列插入任意的数据。 字符串和数字的转换 除了字符串、字符、字节之间的转换,字符串和数值之间的转换也比较常见。...iota 常量生成器 iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都 写一遍初始化表达式。
否则继续等待,直到我们通过 Atomics.wake() 唤醒或直到等待超时。 在前一种情况下,返回 ‘ok’。在后一种情况下,返回’timed-out’。timeout 以毫秒为单位。...: 1.找到捕获组的数量是一件麻烦事:必须使用括号。...3.如果更改捕获组的顺序,则还必须更改匹配代码。 命名的捕获组 ES9中可以通过名称来识别捕获组:(?[0-9]{4}) 在这里,我们用名称标记了前一个捕获组year。...该名称必须是合法的JavaScript标识符(认为变量名称或属性名称)。匹配后,您可以通过访问捕获的字符串matchObj.groups.year来访问。...3.String.trimStart() & String.trimEnd() 有两种新的String方法可从字符串中删除空格: trimStart() 方法从字符串的开头删除空格。
错误类型转换范例 正确使用类型转换范例 不可直接使用无长度限制的函数 使用无长度限制的的函数,它会引发中风险漏洞和高风险漏洞:信息泄露漏洞和缓冲区溢出漏洞。...在使用n系列拷贝函数时,要确保正确计算缓冲区长度,同时,如果你不确定是否地面在各个编译器下都能确保末尾有0时候,建议增加1字节输入缓冲区,并将其置为\0,以确保输出的字符串结尾一定有\0。...使用switch中必须使用default 编程中switch没应用好,它会引发两大中风险漏洞:逻辑漏洞、内存泄漏漏洞。 switch中应该有default,以处理各种预期外的情况。...防止数字类型的错误强转 在编程中数值类型没处理好,它会引发中风险逻辑漏洞和高风险内存破坏漏洞。...在有符号和无符号数字参与的运算中,需要注意类型强转,它可能导致的逻辑错误,建议指定参与计算时数字的类型或者统一类型参与计算。
r+:以读写方式打开文件,该文件必须存在。 rb+:以读写方式打开一个二进制文件,只允许读写数据。 rt+:以读写方式打开一个文本文件,允许读和写。...wb:以只写方式打开或新建一一个二进制文件,只允许写数据。 wb+:以读/写方式打开或新建一个二进制文件,允许读和写。 wt+:以读写方式打开或新建一个文本文件,允许读和写。...fgets 从文件中读取一个字符串 格式为:fgets(s,n,fp) s为字符串指针(数组名),n为最大读取多少字符,fp为文件指针。...格式为:fputs(s,fp) s为字符串指针(数组名),fp为文件指针。...具体方法可以访问:点击访问 fread 以二进制形式读取文件中的数据 格式为:fread(s,n,m,fp) s为字符串指针(数组名),n为一次读取多少字符,m为读取多少次,fp为文件指针。
ob_get_contents — 返回输出缓冲区的内容 ob_get_flush — 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。...非常有用 支持内嵌变量 注意: 以开头,后面另起新行 END; 占用一行,不能有空格 字符串连接小技巧 逗号,也可以和点号.一样连接字符串,同时性能上逗号还好一些,但是非常有限。...转换的变量 var 可以为数组或类之外的任何类型变量。 数字索引的数组,且假定数字索引从 0 开始。...魔术方法:PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以你定义自己的类方法时,不要以 __为前缀。
简单字符串 Simple Strings, 以 "+"加号 开头 格式:+ 字符串 \r\n 字符串不能包含 CR或者 LF(不允许换行) eg:...错误 Errors, 以"-"减号 开头 格式:- 错误前缀 错误信息 \r\n 错误信息不能包含 CR或者 LF(不允许换行),Errors与Simple Strings...整数型 Integer, 以 ":" 冒号开头 格式:: 数字 \r\n eg: ":1000\r\n" 4....大字符串类型 Bulk Strings, 以 "$"美元符号开头,长度限制512M 格式:$ 字符串的长度 \r\n 字符串 \r\n 字符串不能包含 CR或者 LF(...数组类型 Arrays,以 "*"星号开头 格式:* 数组元素个数 \r\n 其他所有类型 (结尾不需要\r\n) 注意:只有元素个数后面的\r\n是属于该数组的,结尾的\
领取专属 10元无门槛券
手把手带您无忧上云