C语言中回车符和回车换行符有什么区别
C语言中回车符和回车换行符有什么区别

声明:本网站依照法律规定提供财经资讯,未授权或允许任何组织与个人发布交易广告。对任何广告信息请谨慎交易,谨防诈骗。举报邮箱:xxxxxxxxx@qq.com
2016-08-12 15:26最佳答案
C语言中用“printf”输出时,换行符是'\n',回车符是'\r'。
C语言中用“scanf”获取输入值时,获取的“敲键盘回车键产生的字符”是换行符。
你把if语句去掉之后,“gets(name) ;puts(name) ;”这两句语句没有失效,而是把换行符获取、输出了。由于你没有在这两句语句后面放置暂停语句,这两句语句把换行符获取、输出后程序直接结束了,没有让你看到效果,所以你认为这两句语句失效了。
C语言中用“scanf”获取输入值时,获取的“敲键盘回车键产生的字符”是换行符。
你把if语句去掉之后,“gets(name) ;puts(name) ;”这两句语句没有失效,而是把换行符获取、输出了。由于你没有在这两句语句后面放置暂停语句,这两句语句把换行符获取、输出后程序直接结束了,没有让你看到效果,所以你认为这两句语句失效了。
其他回答(共7条)
-
2016-08-12 15:47 齐智富 客户经理
C语言中
printf(“\n”)
是打印回车符的意思,也就是我们俗称的换行。
-
2016-08-12 15:44 赵飞行 客户经理
C语言在向计算机输入文本文件时,将回车换行符转换为换行符,在输出时把换行符转换成回车和换行两个字符。
在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应。
c语言中怎样知道文件中的换行符是<cr>还是<crlf>
回答是:这是一个实现相关的问题。
首先纠正一下你说法中的错误:<cr>是回车,在C中就是字符'\r';换行是<lf>,是字符'\n'。
在Windows环境中,如果输入到文本文件,程序中的一个'\n'换行符被解释成'\r'、'\n'两个字符(会车、换行);相反,如果读取文本文件,文件中的相邻的两个'\r'、'\n'会合并为一个'\n'输出。
而在Unix/Linux环境下,'\n'就是'\n',保持不变。
因此,Windows下的文本文件和Unix/Linux下的文本文件的格式是不同的,其原因就在于对于程序中的'\n'换行符的解释不同。
n,换行符(软回车和走纸)
是换行走纸,没有回车,回车是由'\r'实现
在UNIX中,早期的输入通常是穿孔机,没有什么回车概念。在DOS中,由于是屏幕输入,通常就有了'\r''\n'的区别,为了保证每次换行都能从头开始,DOS中的换行符通常会被存储为'\r\n';getchar是标准流接受函数,不识别'\r',getche是有回显的屏幕截取函数,不识别'\n'。
-
2016-08-12 15:41 符耀精 客户经理
注意这点,gets()函数会读取一行字符,直到遇到换行符'\n为止,并且这个换行符不会读取到数组中。
scanf("%s%s",a1,a2);
这一行把aa和bb读取并分别保存到a1和a2数组中,但是会把回车符留在缓冲区中。
gets(a3);gets(a4);
这里的gets(a3)会读取这个回车符,但是不会把回车符保存到a3数组,所以a3数组内容不会改变,接下来的ge涪紶帝咳郜纠佃穴顶膜ts(a4)将以回车结尾的cc dd读取并保存到a4中
puts(a1);puts(a2);
分别在单独的行中输出a1和a2字符串。
puts(a3);puts(a4);
分别在单独的行中输出a3和a4字符串。由于a3没有赋值,所以它依然保持在定义时的随机值。
热心网友 -
2016-08-12 15:38 黄睿多 客户经理
文本文件的行结束符,传统上 PC机 用 CRLF苹果机用CRunix 用 LFCR -- 涪福帝凰郜好佃瞳顶困回车符,c语言'\r' LF -- 换行符, c语言'\n' 不同计算机上c语言统一规定为: 文本文件的行结束符一律变成一个符号LF,也就是换行符,也就是new line符, 也就是'\n'. “回车和换行符转换成一个换行符”-- 对PC机而言,文本文件行结束符,CRLF读入后,丢掉CR,留LF.例如fgets() 读入一行,行尾只有LF,没有CR.
-
2016-08-12 15:35 齐景坤 客户经理
C语言中的getchar, scanf, putchar, printf学习
[摘要:输进战输出功效并非C说话自身的构成局部,他们属于规范库局限,应用输进输出相干函数是必需写:#includestdio.h 。文件名用尖括号括起去时,预处置惩罚器将到特定地位查找而没有是正在工]
输入和输出功能并不是C语言本身的组成部分,他们属于标准库范围,使用输入输出相关函数是必须写:#include<stdio.h> 。文件名用尖括号括起来时,预处理器将到特定位置查找而不是在工程中。
常用的标准的输入输出有:
getchar(void), scanf(char *format, …); putchar(c), printf(char*format, arg1, arg2 ,…)
C语言中,用Dos窗口输入数据时,长度满足输入函数要求并且按下了回车键才能结束本次输入。如果长度满足(包括超出)没有按下回车键,继续等待输入直到按下回车键,如果按下回车键但长度没有达到要求,继续等待输入,直到长度满足要求并且按下回车键。
输入结束后,输入函数接收完所需要的数据或者无法与输入数据匹配时结束(终止)执行。
超出的输入数据(包括回车符)停留在缓存中,等到下一次有输入函数时,传递给输入函数。
在char型的输入中空格、回车、换行等都当成字符处理。
而整形相关输入中,数据边界定义为下一个非数字字符或者指定的字符宽度,在非数字字符中,只有空白符(包括空格、制表符、回车、换页符)可以被自动被忽略。
输入:
int getchar(void)
从标准输入中(一般为键盘)一次读取一个字符,空格回车等都当成一个字符,是最简单的输入机制。
返回:调用时输入字符的ASCII值,遇到文件结尾,返回EOF(符号常量,一般为-1)。
使用“prog <输入文件名”实现输入重定向(改变输入源,例如把键盘输入改成文件输入)
文本流有一系列行组成,每一行的结尾是换行符,如果系统不遵行这种模式,标准库将其转变为该种模式,例如输入端把回车符和换页符都转换为换行符,输出端反向变换。
int scanf(char *format, …)
按照format的格式读入字符,存储在后面参数所代表的地方,因此后面的参数一定是地址(指针)。
返回:成功匹配并赋值的输入项个数,遇到文件结尾,返回EOF,下一个字符与格式说明不匹配,返回0(EOF与0不是同一个概念)
扫描完字符串或者碰到某些输入无法与控制字符匹配时,函数终止
intsscanf(char *string, char *format, arg1, arg2, …)
按照format格式扫描string中的字符,保存在arg1,arg2中,arg1,arg2也必须是地址(指针)。其他与scanf相同
文本流有一系列行组成,每一行的结尾是换行符,如果系统不遵行这种模式,标准库将其转变为该种模式,例如输入端把回车符和换页符都转换为换行符,输出端反向变换。
Format由三部分组成,”<空格制表符(通常省)> <普通字符(可省)> <转换说明(不可省)>”
空格和制表符在处理过程中被忽略。
普通字符(不包括%),用来严格的和输入流中的数据不对,若不相同,则后面的不能输入。
转换说明包括:
% <禁止符*(可省)> <数值(最大宽度,可省)> <h, l或L(对象宽度,可省)> <转换字符>
转换说明中有赋值禁止字符*,跳过该输入字段,......余下全文>>
-
2016-08-12 15:32 樊扬诗 客户经理
在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.
Dos和windows采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF礌长辟短转的辨痊玻花换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件.
在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错.
很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换.
不管在C语言还是其他语言中,CR,LF的定义是不会法神个变化的。基本上如上所述。
-
2016-08-12 15:29 梅金荣 客户经理
1、换行是光标从当前位置换到下一行;
回车是光标从当前位置回到本行的行首;
换行回车效果就是前面两个效果的叠加,也就是换到下一行,并回到行首
2、回车符是Carriage Return, C语言中是'\r'
换行符是Line Feed, C语言中是'\n'
回车换行符实际是两个字符, 就是\r\n
没有满意答案?看看这些问答能否帮助您?
相关百科精选
已有 86485 位专家入驻汇财吧问答
已经帮助 1173961 人解决了问题