精华内容
下载资源
问答
  • 2021-05-20 12:37:36

    2016-08-12 15:54辛国海 客户经理

    C语言中回车,换行,空字符与空格:fgets和gets在读取换行符的区别

    摘要:C语言中,我们常常从终端输入,并且输出到终端,键盘上的回车,输入到缓冲区以后,变成了什么字符?是‘\0’还是‘\n’?回车与换行有什么区别?本文主要为你讲解C语言中的换行、回车等控制字符,帮助区别它们的实质。

    1.空格

    它的ASCII码为0x20,而不是0x00。其中,gets可以读入空格字符。

    2.回车(\r)

    这里有一个很重要的区分点:回车符号和回车键。

    回车(‘\r’)效果是输出回到本行行首,结果可能会将这一行之前的输出覆盖掉。例如执行:

    puts("hello world!\rxxx");

    在终端输出的是:

    xxxlo world!

    如果将上面的字符串写入文件中,例如执行:

    char *s = "hello world!\rxxx";

    FILE *str = fopen("t.txt","r");

    fwrite(s, 16, 1, str);

    用文本编辑器打开t.txt。显示的效果将由打开的编辑器所决定。

    vi的效果为

    windows记事本效果为

    可以看到,vi将\t用^M代替,而记事本就没有显示该字符。

    3.回车键

    关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。

    回车的ASCII代码

    16进制是“0x0d”

    10进制是“13”

    在某些语言中可以用"\r"表示。

    不同的操作系统对回车的处理是不同的:

    在Unix/Linux系统中,换行用"\n"一个字符表示,

    而在Windows系统中,则用"\n\r"两个字符表示。

    4.换行(\n)10

    如果要实现换行的效果,在终端我们只需要使用'\n'即可;如果要想在win系统下的文本中实现换行的效果,需要使用‘\n\r’两个控制字符

    5.C语言对于字符串的处理

    首先,回车键按下以后,键盘缓冲区中存放的是字符\n,如果我们用getchar,那么我们读入的是字符“\n”;如果我们使用gets进行读取,那么“\n”将被作为表示的结束的控制字符读取。然后,gets会自动把这个\n转换成'\0'存储在字符串中。

    另外,如果从终端读取一个字符串,gets会把最后的换行符\n换成\0,而fgets从stdin读入的时候,不会对\n进行处理。...

    更多相关内容
  • 顺序:設定→タイプ别設定→カラー 把前面的勾勾上即可显示,后面的是显示颜色

    在这里插入图片描述

    顺序:設定→タイプ别設定→カラー
    把前面的勾勾上即可显示,后面的是显示颜色
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 启用显示空格字符选项后: 启用/关闭路径: preferences --> Editors --> 文本编辑器 --> 显示空格字符 当勾选了显示空格字符后,可以设置可见性。可设置可见性的空格字符、及显示图标如下: ...

    启用显示空格字符选项后:
    在这里插入图片描述

    启用/关闭路径:

    preferences --> Editors --> 文本编辑器 --> 显示空格字符

    在这里插入图片描述
    当勾选了显示空格字符后,可以设置可见性。可设置可见性的空格字符、及显示图标如下:
    在这里插入图片描述

    展开全文
  • 文本文件换行符

    万次阅读 2017-09-14 13:57:50
    文本文件的每一行结尾用一个或者两个特殊的ASCII字符进行标识,这个标识就是换行符,不同的操作系统中会采用不同的换行符

      文本文件的每一行结尾用一个或者两个特殊的ASCII字符进行标识,这个标识就是换行符,不同的操作系统中会采用不同的换行符。


    1.CR、LF、CRLF

      主要的换行符有三种:LF(Line Feed即换行,转义字符用“\n”表示,十六进制0x0A),CR(Carriage Return 即回车,转义字符用“\r”表示,十六进制0x0D)和CRLF(由两个字符“CR+LF”组成,即“\r\n”,十六进制0x0D 0x0A)。它们的使用范围如下:

    • CR换行符:用于Commodore 8位机、TRS-80、苹果II家族、Mac OS 9及更早版本。
    • LF换行符:用于Multics、Unix、类Unix(如GNU/Linux、AIX、Xenix、Mac OS X、FreeBSD等)、BeOS、Amiga、RISC OS等操作系统中。
    • CRLF换行符:用于DEC TOPS-10、RT-11和其他早期的非Unix,以及CP/M、MP/M、DOS(MS-DOS、PC-DOS等)、Atari TOS、OS/2、Microsoft Windows、Symbian OS、Palm OS等系统中。

      一般操作系统上的运行库会自动决定文本文件的换行格式:程序在Windows上运行就生成CRLF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。因此,当我们在Windows系统上编辑文本文件时,敲下“enter”键或者写入“\n”,系统会经过一个隐式的转换,将“\n”转换成“\r\n”再写入文件,反过来当我们对文件进行读取时,系统又会进行一个隐式的转换,将读取到的“\r\n”转换为“\n”输出。下面我们来看一个Windows上读写文本文件的示例:


    这里写图片描述

    我们新建了一个文本文件“test.txt”,并向其中写入了“\n”,

    这里写图片描述

    用hexdump命令查看“test.txt”的十六进制码,发现“\n”转换成了0d 0a,也即“\r\n”,

    这里写图片描述

    再对“test.txt”进行读取,发现其中的“\r\n”又被转换成了“\n”。

      在Python中,使用os.linesep命令,可以获取当前操作系统的换行符:

    Windows: 这里写图片描述


    Linux: 这里写图片描述

      实际上,自从苹果的Mac OS从第10版转向Unix内核开始,依据不同的文本文件换行符,主流的操作系统可以划分为两大阵营,一方是微软的Windows,使用CRLF作为换行符,另外一方包括Unix、类Unix(如Linux和Mac OS X等)使用LF作为换行符。分属不同阵营的操作系统之间交换文本文件会因为换行符的不同而造成麻烦:编辑器不能识别换行符,可能会显示为特殊字符,如Linux上的编辑器显示的“^M”特殊字符,就是拜Windows的CRLF换行符所赐;或者丢弃换行符,如来自Linux的文本文件,在Windows上打开可能会因为识别不了换行符,导致所有的行合并。
      在不同平台间使用FTP软件传送文件时,在ASCII文本模式传输模式下,一些FTP客户端程序会自动对换行格式进行转换。经过这种传输的文件字节数可能会发生变化,如果你不想ftp修改原文件,可以使用bin模式(二进制模式)传输文本。

    2.特殊字符“^M”

      上一节我们已经讲过,Windows系统采用“\r\n”作为换行符,而Linux系统采用“\n”作为换行符,所以当一个用Windows下的换行符的文件在Linux下用VIM打开的时候,单行的最后一个字符就变成了 “\r”,“\r”在 ASCII 码中是0x0D,而0x0D在VIM中被显示为“^M”。如下图:


    这里写图片描述

    注意,在用VIM打开时,要加-b选项,否则“^M”字符会被隐藏起来,代之以左下角的[dos]标志,以提示你该文本文件采用的是CRLF换行符。

      现在我们来考虑一个很自然的问题,就是如何去掉上述因跨平台而产生的“^M”字符。方法其实有很多,接下来我们将介绍比较常用的几种:

    1. dos2unix:首先在你的Linux机器上安装dos2unix,该命令的作用是将文件中的“\r\n”转换成“\n”。具体的用法可以通过“man dos2unix”命令去了解,这里我们只提两种:
    dos2unix -o file #对文件file进行转换,转换完成后写入源文件file,默认采用此种模式
    dos2unix -n oldfile newfile #对文件oldfile进行转换,转换完成后写入新文件newfile
    与之对称的是unix2dos命令,可将文件中的“\n”转换成“\r\n”,读者自行了解。
    2. VIM字符替换:采用VIM的替换命令“%s/^M//g”或者“%s/\r//g”即可。有两点需要注意的是:a).在VIM中,“^M”字符的输入方式是“[ctrl-v-m]”;b).必须采用“vim -b”模式打开文件,否则行末的“^M”字符会因为被隐藏而无法匹配到。
    3. VIM “set ff=unix”:该命令可以将带有[dos]标志文件转为unix格式,也即将CRLF换行符替换为LF。有两点需要注意的是:a).区别于dos2unix,该命令并不能将文件中的所有“\r\n”转换为“\n”,只有当文件左下角出现[dos]标志时,该命令才能起作用;b).即使是采用CRLF换行符的文件,如果你用“vim -b”去打开的话,也不会出现[dos]标志,因此该命令也不会起作用。与之对称的是“set ff=dos”命令,可将unix格式的文件转换为dos格式,读者自行了解。
    4. sed & tr:采用Linux下的sed或者tr命令可以对文件中的“^M”进行替换或者删除操作,具体用法这里不赘述,读者自行了解。

    3.留一个问题

      讲到这里,关于文本文件换行符的基本内容都大致讲完了,不过,还有一个问题我们没有提及:换行符可以看作是行的结束符,也可以看作行之间的分隔符,这两种处理方式之间存在一些歧义。如果换行符被当作分隔符,那么文件的最后一行就不需要再有换行符。但是多数系统的做法是在最后一行的后面也加上一个换行符,也就是把换行符看作是行的结束符。这样的程序在处理末行没有换行符的文件时,可能会存在问题。相反地,有的程序把换行符看作分隔符,就会把最末尾的换行符看作是新行的开始,也就是多出了一个空行。关于这个问题,此处我们先留着,以后再作讲解。


    参考文献

    [1] http://blog.csdn.net/crazyingbird/article/details/7174499
    [2] http://blog.csdn.net/knowledgeaaa/article/details/23911201
    [3] http://blog.csdn.net/wzb56_earl/article/details/6860358
    [4] https://sphenginx.github.io/2014/12/24/CRLF-in-Unix-like_Windows-os/
    [5] https://www.zhihu.com/question/19751023
    [6] http://jsonliangyoujun.iteye.com/blog/2363195
    [7] http://blog.khotyn.com/blog/2014/11/15/damn-the-carriage-return-character/
    [8] http://www.worldhello.net/gotgit/08-git-misc/040-eol.html
    [9] https://zh.wikipedia.org/wiki/%E6%8F%9B%E8%A1%8C
    [10] https://en.wikipedia.org/wiki/Newline
    以上为本文的全部参考文献,对原作者表示感谢。

    展开全文
  • 如何去除多余的空格、换行符(二):文本文件前言内存变量磁盘文本文件二进制流 前言 前面写过一个关于简单去除多余空格、换行符的小抄: Python: 如何去除字符串多余的空格、换行符。有时,掌握一些不经意间的小...
  • 有时候代码在编辑器显示正常, 但在编辑时却会因为换行符问题而出错. 很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换. 在不同平台间使用 FTP 软件传送文件时, 在...
  • VS Code 设置默认换行符

    千次阅读 2020-06-21 18:00:51
    设置–》用户设置–》文本编辑器–》文件–》eol–》设置为\n 或者直接搜索files:eol进行设置。
  • 不同操作系统中的换行符

    千次阅读 2018-12-17 21:47:46
    文章目录一、不同操作系统下换行符显示二、关于不同换行符的来历1、回车和换行2、不同系统下的实现方式 一、不同操作系统下换行符显示 换行符在 Windows 和 Linux 等系统中的显示符号是不一样的。 ...
  • VScode、IDEA设置换行符

    2020-05-31 18:01:12
    依次选择:文件——首选项——设置——文本编辑器——EOF,然后指定换行符 方法二: 或者直接搜索设置Files: Eol,然后指定换行符 方法三: 或者打开对应作用域的VScode配置json文件,手动修改files.eol的值为...
  • 文章目录 1,问题 2,产生原因 3,解决办法 1,问题 制作测试数据:hue里面添加hbase表数据,在编辑器里面换行保存即可 问题分析-- 字段内容有换行符,导致内容多一行: ...LazySimpleSerDe.SerDeParameters --> which ...
  • Linux 中换行符问题

    千次阅读 2021-05-14 02:29:26
    问题Linux 环境执行一些脚本出错,查找原因,发现是文件在Windows环境修改并上传,格式被转换为MS-Dos格式(换行符不同),这样的文件在Linux中运行会出错(shell 解释换行符作为一个命令的提交)。背景很久以前,...
  • vi下显示回车换行符等特殊符号

    万次阅读 2016-11-30 14:33:12
    如果到了一的结尾处,你要快速回到新的一的开头,需要打印针头在纸面上飞快地掠过, 常常会在纸面上留下污点。解决这个问题的办法就是,用两个字符:一个字符来移到第一列,另一个字符来新增一。计算机产生以...
  • 在plsql把一个sql语句美化后要复制到程序里使用时,就会发现有多余的空格和换行符,此程序将美化后的sql语句还原成1行sql语句
  • 新功能:您可以选择在HTTP消息编辑器中将非打印字符显示为“lozenges”。十六进制值小于20的任何字节都支持此功能,包括制表符,换行符,回车和空字节。
  • Windows文件换行符转Linux换行符

    千次阅读 2018-11-28 11:36:54
    Linux中查看换行符 在Linux中查看换行符的方法应该有很多种,这里介绍两种比较常用的方法。 第一种使用"cat -A [Filename]" 查看,如下图所示,看到的为一个Windows形式的换行符,\r对应符号^M,\n对应...
  • C#中的换行符

    千次阅读 2020-02-24 15:17:51
    编辑器中是以 ‘\r\n’ 作为换行符的,但是在数据库中是 ‘\n’,使用过程中注意进行换行符的操作。 C#去除字符串中的空格,回车,换行符,制表符: string str = str.Replace("\n", “”).Replace(" “,”")....
  • txt中的换行符和sublime中的换行符

    万次阅读 2016-12-05 17:18:19
    一个ANSI编码的文本文件,在txt编辑器中打开,输入一个Enter,用Hexeditor打开后一看,发现多了两个字节,分别是\r和\n 如果用sublime编辑器里打开,输入一个Enter,用Hexeditor打开后可以发现,和上面是一样的。 ...
  • 使用VS Code 版本1.38,您可以在编辑器的“查找”框中键入Control + Enter ,以添加换行符。 With VS Code release 1.30 you can type Shift + Enter in the search box to add a newline character without ...
  • 最近在新电脑做一个简单的Qt项目时,在debug输出的时候,出现了C2001错误,提示“常量中有换行符”, 比如 ui->pBtnStart->setText(tr("开始监测")); 就会出现常量中有换行符,肉眼确实没看出来...... ...
  • 【题目】在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别   一、去除换行符 以使用readline进行读取为例: import re data =[] f = open("data.txt", "r") ...
  • CKeditor编辑框内容去除换行符

    千次阅读 2018-03-09 13:10:35
    CKeditor也是比较出名的富文本编辑器,最近在做一个Blog后台发布文章的功能时用到了CKeditor,感觉还是挺好用的,但在项目期间,做修改blog内容功能时,出现了一个问题写blog时是没有问题的,数据也相应的存储到...
  • 在VI中删除行尾的换行符

    千次阅读 2017-02-18 22:04:04
    在vi中,如果要删除行尾的换行符,可以用如下方法 第一种情况:只删除单行 如有文件如下: [fanzf@SWserver ~/tmp]$ cat names.tmp  101 Nate H. 102 John M. 104 Cassy T. 106 Mary L. 107 Isaac C. 要...
  • outlook换行符怎么去掉

    千次阅读 2018-01-30 11:41:24
    1、打开Ountlook,点击菜单中的“新建”,2、在弹出的新建邮件窗口中写一小段文字用于之后测试是否成功去掉回车,,4、在弹出的“编辑器选项”窗口的左边找到"显示“并选中它,然后在窗口的右边找到 "...
  • 当我们使用Qt编程时,如果程序代码中使用了中文字符,编译程序有时会出现莫名其妙的编译错误,提示“常量中有换行符”。 这究竟是怎么回事,又该如何解决呢? 错误原因 在 Qt 中,默认的编码是 Unicode,我们书写...
  • 需求:前端需要一句话但这句话中包括换行符\n,比如:你好\n世界 错误的做法:直接把这句话存到数据库中,就比如这样: 然后通过一系列的查询,通过swagger ui测试接口查出来的结果是这样的: 这样的结果是...
  • PHP学习----换行符

    万次阅读 2018-05-27 09:19:06
    PHP换行符 原本以为使用双引号能够转义\n或者<br>进行换行操作,在操作中发现 \n用法 如下代码 <?php echo "nocs\n"; echo &...
  • IDE 中文件的换行符使用 Unix 格式,不要使用 Windows 格式。 原因:    在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,140
精华内容 51,256
关键字:

能显示换行符的编辑器