\r,\n,\r\n意义及区别

在ASCII码中,从 0~31(十进制)的字符为控制字符,它们都是看不见的字符,不能在显示器上显示,也没法书写(在键盘上找不到对应的按键,只能通过特殊方式输入,如ctrl+d表示EOF),只能以转义字符的形式来表示。不过,直接使用ASCII码值记忆不方便,针对常用的控制字符,C语言又定义了简写方式,完整的列表如下:

转义字符意义ASCII码值
\a响铃(BEL)0x7
\b退格(BS),将当前位置移到前一列0x08
\f换页(FF),将当前位置移到下页开头0x0c
\r回车(CR) ,将当前位置移到本行开头0x0d
\n换行(LF),将当前位置移到下一行开头0x0a
\t水平制表(HT)(跳到下一个TAB位置)0x09
\v垂直制表(VT)0x0b
\代表一个反斜线字符’\’0x5c
\’代表一个单引号(撇号)字符0x27
\”代表一个双引号字符0x22
\0空字符(NULL)0x0
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh1到2位十六进制所代表的任意字符二位十六进制

ok,本篇的重点是\r,\n,\r\n意义及区别,\r和\n的意义上面已经写了:
1. \r(return),回车(CR,Carriage-Return) ,将当前位置移到本行开头,ascii值为0x0d
2. \n(new line),换行(LF,Line-Feed),将当前位置移到下一行开头,ascii值为0x0a

在Windows中:
1.’\r’ 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
2.’\n’ 换行,换到当前位置的下一行行首;
Unix系统里,每行结尾只有“”\n”;Windows系统里面,每行结尾是”\r\n”;Mac系统里,每行结尾是”\n”;一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾会多出一个^M符号。^M表示按住ctrl+M输出的字符,在Mac系统中表示\n.在Mac系统中按回车键,输出的其实是\n.
验证代码如下:

#include <stdio.h>
int main(){
    char ch;
    while(1){
        ch = getchar();
        if(ch == '\r'){
            printf("按下enter键输出\\r");
        }else if(ch == '\n'){
            printf("按下enter键输出\\n");
        }
    }
}
//运行该程序,分别按下enter键和control+m键,输出结果如下:
//按下enter键输出\n
//按下enter键输出\n
//备注:该程序在mac系统上执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值