phpstudy怎么创建网站,个人开发网站要多少钱,长安做网站,龙海网站建设注#xff1a;本文为 “C 语言转义序列” 相关合辑。 略作重排#xff0c;未整理去重。 如有内容异常#xff0c;请看原文。 对C标准中空白字符#xff08;空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f)#xff09;的理解
boyinnju 于 2011…注本文为 “C 语言转义序列” 相关合辑。略作重排未整理去重。如有内容异常请看原文。对C标准中空白字符空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f)的理解boyinnju 于 2011-10-16 00:01:06 发布C 语言空白字符解析1 概述C 标准库头文件ctype.h提供如下接口intisspace(intc);该函数判定参数c是否属于标准空白字符。依据 ISO/IEC 9899:2018 §7.4.1.10空白字符集包含以下 6 个字符字符转义序列十进制码值十六进制码值名称SP 320x20空格HT\t90x09水平制表符VT\v110x0B垂直制表符FF\f120x0C换页符CR\r130x0D回车符LF\n100x0A换行符下文分节讨论各字符的语义、终端行为与文件存储差异。2 空格 (SP, 0x20)空格字符的编码为 0x20而非 0x00。后者表示空字符NULL常用于字符串终止。3 回车符 (CR,\r)回车符仅将光标移至当前行行首不隐含换行。若后续仍有输出则会产生覆盖。示例puts(hello world!\rxxx);终端实际显示xxxlo world!若将相同字节序列写入文本文件不同编辑器呈现如下vi以^M显示0x0DWindows 记事本不呈现控制图形4 换行符 (LF,\n)换行符将光标移至下一行列位置保持不变。终端输出与文件存储行为存在系统差异系统行尾序列UnixLFWindowsCR LFmacOSCR5 水平制表符 (HT,\t)水平制表符用于实现“跳格”对齐默认制表宽度为 8 列。其停止位满足列号column 8 n , n ∈ N 0 \text{column} 8 n,\quad n \in \mathbb{N}_0column8n,n∈N0示例puts(0123456\txx);puts(0123456t\txx);终端输出6 垂直制表符 (VT,\v)垂直制表符使后续字符从下一行、当前列 1 位置开始输出常用于早期打印设备。示例puts(01\v2345);终端输出7 换页符 (FF,\f)换页符在终端中等价于执行clear命令先清屏再输出后续内容。若写入文本文件多数编辑器将其视为普通控制字符无清屏语义。8 小结字符\r、\t、\v、\f均属控制字符其可视化效果取决于输出环境终端按控制语义解释文本文件由编辑器自行决定呈现方式通常不触发控制动作转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\,\‘,\“,?)详解转义字符对应的全称输出结果和对应的ASCII码值详解南城花开过 于 2022-12-10 08:54:21 修改环境说明64-bit Windows MinGW64。不同设备、编译器或终端环境下部分转义序列的表现可能存在差异。1 引言转义序列Escape Sequence以反斜杠\引导用于表示无法直接输入如控制字符或具有特殊语义的字符。每个转义序列对应唯一的 ASCII 码值且在输出时表现出特定的行为逻辑是 C 语言处理字符输出的基础。2 转义序列总览汇编 编程场景 ASCII 码值转义字符英文全称说明ASCII 码值汇编ASCII 码值编程\0NULL字符串结束标记空字符00H/ 00x00/ 0\nNew Line换行光标移至下一行开头0AH/ 100x0A/ 10\rCarriage Return回车光标移至当前行行首0DH/ 130x0D/ 13\tHorizontal Tab水平制表符等效按 Tab 键默认 8 空格缩进09H/ 90x09/ 9\vVertical Tab垂直制表符后续字符从下一行下一列开始输出0BH/ 110x0B/ 11\aBell (Alert)响铃终端发出提示音07H/ 70x07/ 7\fForm Feed换页符清空当前输出区域后换行输出0CH/ 120x0C/ 12\bBackspace退格光标左移一位覆盖前一字符08H/ 80x08/ 8\\Backslash输出转义后的反斜杠\5CH/ 920x5C/ 92\?Question Mark输出问号?3FH/ 630x3F/ 63\Single Quote输出单引号27H/ 390x27/ 39\Double Quote输出双引号22H/ 340x22/ 343 典型转义序列示例3.1\0空字符字符串结束标志功能作为字符串的终止符系统会自动添加在字符串末尾程序输出字符串时遇到\0即停止输出。示例代码#includestdio.hintmain(){printf(hello world\0test);// \0 后的 test 不会输出return0;}输出结果hello world3.2\n换行符功能将输出光标移动到下一行的起始位置是最常用的换行控制符。示例代码#includestdio.hintmain(){printf(第一行内容\n第二行内容);return0;}输出结果第一行内容 第二行内容3.3\r回车符功能仅将光标移至当前行开头不换行、不删除原有内容后续输出会覆盖行首字符。示例代码回车覆盖#includestdio.hintmain(){printf(hello world\rworld);// 光标回行首后world 覆盖前 5 个字符return0;}输出结果world world3.4\t水平制表符功能等效于按下 Tab 键用于快速对齐输出内容默认缩进 8 个空格。示例代码#includestdio.hintmain(){printf(姓名\t年龄\t性别\n);printf(张三\t20\t男\n);return0;}输出结果姓名 年龄 性别 张三 20 男3.5\v垂直制表符功能后续字符从下一行、当前字符的下一列开始输出与\f行为相似但不清空屏幕。示例代码#includestdio.hintmain(){printf(hello\vworld);// world 从下一行第 6 列开始输出return0;}输出结果hello world3.6\a响铃符功能触发终端响铃无字符输出仅听觉提示。示例代码#includestdio.hintmain(){printf(操作完成\a);// 输出操作完成后终端响铃return0;}输出结果操作完成终端同时发出提示音3.7\f换页符功能清空当前输出区域后换行输出行为接近\v但会重置输出区域。示例代码#includestdio.hintmain(){printf(原有内容\f新内容);// 清空原有内容后输出新内容return0;}输出结果新内容3.8\b退格符功能光标左移一位覆盖前一个字符而非真正删除。示例代码#includestdio.hintmain(){printf(hello!\bk);// \b 覆盖!为kreturn0;}输出结果hellok3.9 转义符\\/\?/\/\此类转义序列用于输出具有特殊语义的字符本身是转义符或引号功能为“输出字符本身”示例如下转义字符示例代码输出结果\\printf(\\);\\?printf(\?);?\printf(\);\printf(\);4 总结C 语言转义序列本质是“多字符表示单一语义字符”其 ASCII 码值由标准定义输出行为则受运行环境操作系统、终端、编译器影响。C 语言空白字符与控制转义序列依据ISO/IEC 9899:2018 (C17)、POSIX.1-2017、Linux man-pages 6.91 转义序列全集标准 通用扩展序列码值标准说明\00x00●字符串结束空字符\a0x07●告警蜂鸣\b0x08●退格\t0x09●水平制表\n0x0A●换行\v0x0B●垂直制表\f0x0C●换页\r0x0D●回车0x22●双引号’0x27●单引号?0x3F●问号\0x5C●反斜杠\e0x1B○ESCGCC/Clang 扩展【数值写法】八进制\033十六进制\x1B与上述扩展等价\e2 易错点与未定义行为负值参数charc-5;if(isspace(c))/* 未定义行为 */改正if(isspace((unsignedchar)c))...二进制流误用文本模式FILE*fpfopen(data.bin,w);/* 应使用 wb */fwrite(\n,1,1,fp);/* Windows 会写入 0x0D 0x0A */混用 \r 与 \n 导致覆盖示例printf(hello\rxx);会显示xxllo刷新行缓冲可用fflush(stdout)终端特定行为依赖不同终端对控制字符的处理可能不同应避免依赖特定终端的行为小结空白字符仅 6 个isspace()结果与区域设置无关控制字符在终端与文件表现可能不同转义序列在编译期解析为单个 char 值理解其数值有助于调试跨平台差异文本流和二进制流的区别需要特别注意掌握各转义序列的数值与效应可精准控制字符输出格式避免因平台差异导致的显示异常如换行/回车在 Windows 与 Linux 下的表现差异是编写健壮字符处理程序的基础。via:对C标准中空白字符空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f)的理解_c语言空格符号是什么-CSDN博客https://blog.csdn.net/boyinnju/article/details/6877087转义序列字符(\0,\n,\r,\t,\v,\a,\f,\b,\,\‘,\“,?)详解转义字符对应的全称输出结果和对应的ASCII码值详解-CSDN博客https://blog.csdn.net/2201_75670821/article/details/128247316