这是偶第二次自己写对外部的技术文档:
这次公司要开发一个有关从外部读取权限信息。
牵涉到了文件的解析。
在文件的解析中,最麻烦的可能就数对一些控制符号的理解了。
而首当其冲的就是换行符号'\n'与回车符号"\r".
google找到了这么一段信息:
换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符
'\n' 10 换行(newline)
'\r' 13 回车(return)
在windows系统下,回车换行符号是"\r\n".但是在Linux等系统下是没有"\r"符号的。
在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定"\r\n"又要判定"\n"。
现在还是对它很模糊的概念, 那么我们写个测试的代码吧!
bool checkLineSymbol() {
char *fileStr;
Int32 length = 0;
Int32 i =0;
Int32 number = 0;
fileStr = loadPolicyFile();
if(fileStr == NULL) {
return false;
}
length = cStrlen(fileStr);
cTrace("file char length: \n");
cTrace("%d\n", length);
for(i = 0; i < length; i++) {
number = (Int32)(*(fileStr + i));
cTrace("number: %d\n", number );
}
cTrace("test checkLineSymbol is end!\n");
}
代码看不懂没有关系, 上面的代码主要功能是从一个txt文件中输出每个字符的数字。我的这个文本文件中主要是写入了“\n”两个字符,同时进行了一个回车的操作。我想看一下输出的结果是什么。最后输出的结果,显示有4个字符, 分别是92, 110,13, 10。也就是说我只是写入了2个字符,但是通过文件操作函数的read,它给我读出了4个字符。那么这三个数字分别代表什么呢。
我去查了一下assII码表,92 为‘\’, 110为 'n', 13与10是控制符号,分别是'cr','nl'。说明了当我们在编辑文本文件(nodepad)的时候。每次调入一个回车键的时候,nodepad编辑器自动给我们加了13,10两个控制符号。
后来我又使用了vim文本编辑器进行相同的编辑,输出的结果为92, 110, 10三个字符。说明vim编辑器里面,敲入一个回车键, 该编辑器只是给我们添加了一个10控制符号来表示换行。
这里我引出一个话题, 那就是notepad编辑器为什么在敲入回车键的时候,微软工程师们要加入一个\r呢。而vim也就是Linux帮派不加入这个控制符号呢? 这里面有什么猫腻, 就由读者你自己去研究了。我就不管这些东东了。等你研究出来我google罗。哈哈
bool checkLineNumber() {
char nL = '\n';
char rL = '\r';
Int32 number = 0;
number = (Int32)nL;
cTrace("\\n in code number is: \n");
cTrace("%d\n", number);
number = (Int32)rL;
cTrace("\\n in code number is: \n");
cTrace("%d\n", number);
cTrace("test checkLineNumber is end");
}
上面这段代码,主要是说明一下,我们在编写代码中。有一个叫字符转义符号的问题。通常我们在解析文件中的数据的时候,都要判断文件是否需要换行。这样我们就知道那里是换行,那里不换行了。以为我们以后的逻辑处理。
那么为什么要引入字符转义符号呢?个人觉得主要是为了方便记忆吧。'\r',代表回车符号。 '\n'代表换行,外文也就是newLine,老外搞的一套东东。代码在进行编译的时候,编译器会做处理,把'\r'转成13。
其实我们完全可以写成char nL = 13;来代表这个字符是回车符号。但是char nL = '\r'比较直观。这里我做一个猜测:在编译C阶段,char nL = 13;这段代码行可能比char nL = '\r'快。因为编译器要对后一个代码做一些额外的处理。当然这是没有必要的,因为毕竟这些消耗是可以忽略不记的,相对现在的计算机处理速度。
好了,现在说说我上面代码的功能吧,主要是看看'\r'与'\n'分别是什么值。输出的结果是'\r'为转义成了13, '\n'被转义成了10.
now,分析完毕!大致有了个了解了, 我要开始写代码了。呵呵,你懂了么?
分享到:
相关推荐
我到公司后先测试一下客户给我的错误示例(果然搜不到),然后排查一下昨天的数据是否有问题,发现昨天客户用excel导入的数据中,存在很多\r\n这种换行符和回车符。 如:库中数据为:“换行符\n换行符\n换行符”,...
当用户在`textarea`中按下回车键时,浏览器会将其识别为换行符(`\r\n`),这在JavaScript读取`textarea`的值时也会体现出来。然而,在后续的数据处理过程中,例如在业务逻辑层将这些值转换成字符串形式并存储到...
今天在编写99乘法在线小游戏(看过我的 linux下c实现的数据库备份(第四版)应该知道我在那里提过^.^)的时候遇到读取文件的信息遇到回车换行符的烦恼。 比如我文件里面有如下信息: name=qizexi sex=man 我希望读取...
在Java中,换行符通常使用`\r\n`(回车加换行)或`\n`(仅换行)来表示。其中: - `\r`:回车,ASCII码为13。 - `\n`:换行,ASCII码为10。 Java中对于换行符的支持是跨平台的。例如,在Windows平台上,默认使用`\r...
这里`\r`代表回车符,`\n`代表换行符。在“替换为”输入框中输入逗号`,`,该字符将在替换过程中被用来替代所有找到的换行符。 为确保换行符能够被正确识别和替换,我们需要在替换对话框中勾选“扩展(\n, \r, \t, \0...
1. **回车符与换行符**:在JavaScript中,回车符(`\r`)和换行符(`\n`)通常用来表示新行。如果在`eval()`的字符串参数中存在这些字符,它们会被解释为代码的分隔符,可能导致代码执行错误或不按预期运行。因此,...
- 对于不同平台的文本处理,需要注意不同的换行符(Windows使用`\r\n`,Unix/Linux使用`\n`)。 通过以上知识点的详细解析,我们可以了解到Java中去除字符串中的空格、回车、换行符、制表符的具体实现方式及其应用...
在输入框中,用户可以输入“\r\n”来代表回车换行符,并提供一个替换字符,比如空格。点击“替换”或“全部替换”按钮后,工具会遍历选定的范围,将所有找到的回车换行符替换为指定的字符。 这个工具对于数据清洗和...
回车换行符(CR+LF)在不同操作系统中表示新行的方式可能不同,例如在Windows系统中是两个字符(\r\n),而在Unix或Linux系统中仅使用一个字符(\n)。因此,当跨平台处理文本时,可能会出现显示问题,此时就需要...
除了空格、换行符和回车符之外,有时还需要处理其他类型的空白字符,例如制表符(`\t`)或垂直制表符(`\v`)。这时可以通过扩展正则表达式来包含这些字符,如 `/[\s\n\r\t\v]+/g`。 #### 2.3 实战案例分析 假设有...
回车换行符是文本中用于表示新行的特殊字符组合,通常由`\n`(换行符)和`\r`(回车符)组成,尤其是在Windows系统中。而在Unix和Linux系统中,通常只使用`\n`作为换行符。了解如何有效地替换这些字符可以帮助我们...
中的回车符给困扰着, 回车换行的内容(\r\n)经常需要显示为HTML中的 ,这时就需要做替换操作了。 如果只是简单的将字符串strObj调用replace()方法,则结果只替换第一个回车符, 问题不难,关键是得...
另一个常见的换行表示是“\r\n”,这是回车符(\r)和换行符(\n)的组合。回车符(\r)的作用是将光标移动到当前行的起始位置,而换行符(\n)则将光标移动到下一行。这种组合在Windows系统中用于表示新行。因此,...
在计算机世界中,回车符(0x0d)和换行符(0x0a)是两个非常重要的概念,但是很多人对它们的理解却存在一定的混淆。今天,我们就来彻底搞清这两个概念的区别和作用。 首先,我们来看看在不同的环境下,回车符和换行...
在上面的代码中,我们使用正则表达式 `\\s*|\\t|\\r|\\n` 来匹配字符串中的空格、制表符、回车符和换行符。然后,我们使用 Matcher 对象的 replaceAll() 方法将这些无用字符替换为空字符串。 2. 使用 String 类的 ...
在正则表达式中,“.”(点号)是一个特殊的元字符,它代表一个占位符,能够匹配任何单个的字符,除了特殊字符回车符(\r)和换行符(\n)。 在描述和部分内容中,提到了点号元字符的特性以及在不同浏览器中的兼容...
C++换行符知识点总结 C++换行符是一种特殊的控制字符,在C++编程中经常使用,然而,...本文总结了C++换行符的知识点,包括\n、\r、endl等换行符的使用和替换方法。希望本文能够帮助大家更好地理解和应用C++换行符。
C#中,读取文本文件内容,里面往往有许多回车换行符(“\r\n”),虽然一般不可见,但却实实在在的存在。这时候,使用正则表示式进行匹配,需要考虑其存在。今天就遇到这样一个问题: 有文本文件内容如下: DT ...
在UNIX/Linux中使用换行符\n,在Mac系统中使用回车符\r,而在Windows系统中使用回车换行符\r\n。在编写跨平台的应用时,需要根据不同的系统环境输出正确的换行符。 5. 当需要处理字符串中的换行时,可以采用以下三...