【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?

news/2025/11/21 21:44:03/文章来源:https://www.cnblogs.com/wangya216/p/19254596

\r\n 和 \n\r 不是一回事,它们是两种完全不同的字节序列,在语义和实际效果上也完全不同。

一、含义对比

序列 字节(十六进制) 含义


\r\n 0x0D 0x0A 回车(Carriage Return) + 换行(Line Feed)
✅ Windows 标准换行符
\n\r 0x0A 0x0D 换行 + 回车
❌ 不是任何主流操作系统的标准换行符

二、行为差异(以终端/编辑器为例)

  1. \r\n(标准 Windows 换行)
    光标先回到行首(\r),再下移一行(\n)。
    结果:正常换行到下一行开头。
    所有 Windows 程序(记事本、CMD、PowerShell 等)都正确识别。
  2. \n\r(非标准顺序)
    先下移一行(\n),光标停在新行的相同列位置;
    再执行 \r,光标回到该行开头。
    视觉效果看似“换行了”,但:
    在某些终端中可能显示异常(如多出空行或光标错位);
    文本编辑器通常不会将其识别为一个换行符,而是当作两个独立控制字符;
    在按行解析文件时(如 fgets、Python 的 readline()),不会在此处分割行!

三、实际影响示例

假设文件内容为(用转义序列表示):
text
Hello\n\rWorld
Python 读取(默认 newline=None):
python
with open('test.txt', 'r') as f:
lines = f.readlines()
结果:lines = ['Hello\n', '\rWorld\n'] (取决于具体实现,但通常不会在 \n\r 处断行)

实际上,Python 的通用换行模式只识别 \n、\r\n、\r 作为行分隔符,不识别 \n\r。
C 语言 fgets():
只会在遇到 \n 时停止(因为它是 Unix 风格换行);
\r 被视为普通字符,保留在缓冲区中。
Git / diff 工具:
会将 \n\r 视为“内容中的特殊字符”,而非换行,可能导致混乱的 diff 输出。

四、结论
✅ \r\n 是合法且标准的 Windows 换行符。
❌ \n\r 是非标准、无实际用途的错误组合,应避免使用。
💡 记忆技巧:
“先回车,再换行” —— 就像老式打字机:先把打印头归位(\r),再滚纸一行(\n)。
所以正确顺序是 \r\n,而不是反过来。

如果你在代码或数据中看到 \n\r,很可能是程序逻辑错误或字符串拼接失误导致的,建议检查并修正为标准格式(\n 或 \r\n)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025-11-21

CF Problem - 1234C - Codeforces(贪心) #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; string s[2];void solve() {int n;cin >&g…

深入解析:windows显示驱动开发-CCD api的摘要及方案(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

nju实验七 状态机及键盘输入

本实验的目的是学习状态机的工作原理,了解状态机的编码方式,并利用PS/2键盘输入实现简单状态机的设计。实验七 状态机及键盘输入 简单状态机 . ├── build ├── constr │ └── top.nxdc ├── csrc │ └…

2025-11-21 XQQ NOIP Round 1 hetao1733837的record

2025-11-21 XQQ NOIP Round 1 hetao1733837的record2025-11-21 XQQ NOIP Round 1 hetao1733837的record A.tree 提交链接:树 题面 题目描述 给定一棵 $n$ 个点的树和一个长度为 $n$ 的数组 $score[0], ..., score[n-1…

Gephi如何支持MySQL数据的复杂查询

Gephi是一个用于网络可视化的开源软件,它主要处理的是图数据结构。虽然Gephi本身并不直接支持MySQL数据库的复杂查询,但你可以通过以下步骤将MySQL中的数据导入到Gephi中,并在Gephi中进行进一步的处理和分析:数据提…

Mozilla CI日志中暴露微软x-apikey的安全事件分析

微软遥测API密钥在Mozilla持续集成公共日志中意外暴露。该密钥出现在自动化Firefox测试期间发送到微软遥测端点的HTTP POST请求中,通过mitmproxy日志捕获。尽管安全影响有限,但Mozilla已采取措施防止未来凭证泄露。报…

Gephi中MySQL数据的节点和边如何设置

在Gephi中,使用MySQL数据源时,首先需要导入数据到Gephi的工作空间。以下是设置节点(Node)和边(Edge)的一般步骤:导入MySQL数据:使用Gephi的MySQL插件或其他适当的方法连接到您的MySQL数据库。 执行SQL查询以提…

Gephi怎样优化MySQL数据的展示效果

Gephi是一个用于网络可视化的开源软件,它可以帮助用户创建网络图和数据可视化。然而,Gephi本身并不直接与MySQL数据库交互,它通常用于处理和分析已经存在于内存或文件中的数据集。如果你想要优化MySQL数据的展示效果…

Gephi对MySQL数据的导入导出有何支持

Gephi是一个用于网络可视化的开源软件,它主要处理的是图数据结构。关于Gephi对MySQL数据的导入导出支持,这通常取决于Gephi的版本以及用户是否进行了特定的配置或开发。在标准的Gephi版本中,可能并没有直接针对MySQ…

Fisrt Blog

音视频简介 这是单个代码,find() 这是一段代码 #include<stdio.h> int main() {code } 213213"213231" 这是斜体 这是加粗 ffmpeg find函数她有以下几个用法:第一个用法是 第二个用法我是十个机器人…

揭秘Java对象的内存占用量:从面试题到底层原理

你是否在面试中被问到过:“一个new Object()在JVM中占多少内存?” 这个问题看似简单,却考察了你对Java内存模型(JVM)、数据结构和性能优化的理解深度。今天,我们就来彻底搞懂它。 一、核心结论:一个Java对象的三…

nju实验六 移位寄存器及桶形移位器

本实验将学习常用的移位寄存器的设计,并实现在移位指令中需要用到的桶形移位器。实验六 移位寄存器及桶形移位器 算术移位和逻辑移位寄存器 module shift_register_8bit (input clk, // 时钟信号input r…

P6727 [COCI 2015/2016 #5] OOP

题目给出字符串按 * 断开得到前后两段 \(P,S\),即要求满足一下条件的模式串个数:具有前缀 \(P\),后缀 \(S\)。\(|P|+|S|\le siz\)。

c语言和python如何解决文本文件中“不同平台换行符不兼容”问题

在 C 语言和 Python 中解决不同平台换行符不兼容的核心思路一致:统一换行符标准(推荐使用 \n),或在读写时适配目标平台。以下是具体实现方案: 一、核心背景:不同平台的换行符差异平台 换行符 说明Unix/Linux \n …

智能制造(MOM)-详细设计 - 智慧园区

数字化智能制造成熟度框架 数字化智能工厂应用架构 数字化智能工厂技术架构 数字化智能工厂制造体系 未来数字化智能工厂愿景 价值驱动的数字化智能工厂指标 关键环节解决方案 端到端闭环的运营协同 产品BOPIMBOM数据流…

完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求

完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求2025-11-21 21:12 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

基于 Erlang 的英文数字验证码识别系统设计与实现

一、引言 验证码(CAPTCHA)作为互联网中抵御自动化攻击的重要安全机制,被广泛用于登录验证、注册防刷、评论防机器人等场景。 传统验证码识别常用 Python 或 C++ 实现,而本文将介绍如何用 Erlang 来构建一个基础的英…

如何使用IDM嗅探视频并下载?

用 IDM 嗅探下载网页视频,优先用浏览器浮窗一键下载;浮窗不出现则补全插件/格式、手动抓直链或用站点抓取;加密/分离流需先合并,全程遵守版权与站点规则。🎬前置准备(必做)安装官方最新 IDM,激活并重启;安装…

洛谷 B4409:[GESP202509 一级] 商店折扣 ← 模拟算法

​【题目来源】https://www.luogu.com.cn/problem/B4409【题目描述】商店正在开展促销活动,给出了两种方案的折扣优惠。第一种方案是购物满 x 元减 y 元;第二种方案是直接打 n 折,也就是说价格变为原先的 n/10。这里…

java数据结构--LinkedList与链表 - 教程

java数据结构--LinkedList与链表 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…