关于C语言中的换行符和回车符
把换行符和回车符用ASCII码表示,然后写了下面的小程序:但不理解为什么输出结果是这样,求大神指点。(如果是回车就没问题的,下面写的是换行符,是十六进制的转义字符)#in...
把换行符和回车符用ASCII码表示,然后写了下面的小程序:但不理解为什么输出结果是这样,求大神指点。(如果是回车就没问题的,下面写的是换行符,是十六进制的转义字符)
#include<stdio.h>main() { printf("%c",'a'); printf("%c",'\xd'); printf("%c",'b');}
输出结果:d
为什么不是:a
d
再改一下:
#include<stdio.h>main() { printf("%c",'a'); printf("%c",'c'); printf("%c",'\xd'); printf("%c",'b');}
输出结果:bc
竟然b和c的顺序也是反的,实在不懂。。。 展开
#include<stdio.h>main() { printf("%c",'a'); printf("%c",'\xd'); printf("%c",'b');}
输出结果:d
为什么不是:a
d
再改一下:
#include<stdio.h>main() { printf("%c",'a'); printf("%c",'c'); printf("%c",'\xd'); printf("%c",'b');}
输出结果:bc
竟然b和c的顺序也是反的,实在不懂。。。 展开
4个回答
展开全部
注意有两个比较特殊的字符
回车符和回车换行符
'\xd'这是个转义字符
其中的x表示他是一个16进制数
16进制的d就是10进制的13
也就是 '\r' 字符,也就是回车符(注意跟'\n'这个回车换行符比较)
输入这个字符后,光标会跳到本行首,注意是本行首位,好了
看你的代码
#include<stdio.h>
void main()
{
printf("%c",'a'); //先输入字符a
printf("%c",'\xd'); //跳到这行首
printf("%c",'b'); //再输出字符b,覆盖了最开始输出的a字符,所以最后只输出 字符b
}
第二段代码:
#include<stdio.h>
void main()
{
printf("%c",'a'); //先输出a
printf("%c",'c'); //再输出c
printf("%c",'\xd'); //跳到行首
printf("%c",'b'); //输出b,覆盖了第一句的a,所以输出 bc
}
回车符和回车换行符
'\xd'这是个转义字符
其中的x表示他是一个16进制数
16进制的d就是10进制的13
也就是 '\r' 字符,也就是回车符(注意跟'\n'这个回车换行符比较)
输入这个字符后,光标会跳到本行首,注意是本行首位,好了
看你的代码
#include<stdio.h>
void main()
{
printf("%c",'a'); //先输入字符a
printf("%c",'\xd'); //跳到这行首
printf("%c",'b'); //再输出字符b,覆盖了最开始输出的a字符,所以最后只输出 字符b
}
第二段代码:
#include<stdio.h>
void main()
{
printf("%c",'a'); //先输出a
printf("%c",'c'); //再输出c
printf("%c",'\xd'); //跳到行首
printf("%c",'b'); //输出b,覆盖了第一句的a,所以输出 bc
}
展开全部
文本文件的行结束符,传统上
PC机
用
CRLF
苹果机用CR
unix
用
LF
CR
--
回车符,c语言'\r'
LF
--
换行符,
c语言'\n'
不同计算机上c语言统一规定为:
文本文件的行结束符一律变成一个符号LF,也就是换行符,也就是new
line符,
也就是'\n'.
“回车和换行符转换成一个换行符”--
对PC机而言,文本文件行结束符,CRLF读入后,丢掉CR,留LF.
例如fgets()
读入一行,行尾只有LF,没有CR.
PC机
用
CRLF
苹果机用CR
unix
用
LF
CR
--
回车符,c语言'\r'
LF
--
换行符,
c语言'\n'
不同计算机上c语言统一规定为:
文本文件的行结束符一律变成一个符号LF,也就是换行符,也就是new
line符,
也就是'\n'.
“回车和换行符转换成一个换行符”--
对PC机而言,文本文件行结束符,CRLF读入后,丢掉CR,留LF.
例如fgets()
读入一行,行尾只有LF,没有CR.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将printf("%c",'\xd');
改为
printf("%c",'\x0d');
结果还是一样吗
改为
printf("%c",'\x0d');
结果还是一样吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%c",'a'); 在本行第一格,打印字符a
printf("%c",'\xd'); 光标移动到本行第一格 因为 \xd 是16进制编码 0x0d, 是控制字符 “回车”。
printf("%c",'b'); 在当前位置上 打印字符b,这就把原来本行第一格处的字符改写了。
printf("%c",'a'); 在本行第一格,打印字符a
printf("%c",'c'); 在本行第二格,打印字符c
printf("%c",'\xd'); 光标移动到本行第一格
printf("%c",'b'); 在当前位置上 打印字符b,把原来本行第一格处的字符改写成b
第一格是b,第2格是c
看到是 bc
0x0a -- 新行,换行,New-Line, Line Feed (LF)
0x0d -- 回车,Carriage Return, (CR)
printf("%c",'\xd'); 光标移动到本行第一格 因为 \xd 是16进制编码 0x0d, 是控制字符 “回车”。
printf("%c",'b'); 在当前位置上 打印字符b,这就把原来本行第一格处的字符改写了。
printf("%c",'a'); 在本行第一格,打印字符a
printf("%c",'c'); 在本行第二格,打印字符c
printf("%c",'\xd'); 光标移动到本行第一格
printf("%c",'b'); 在当前位置上 打印字符b,把原来本行第一格处的字符改写成b
第一格是b,第2格是c
看到是 bc
0x0a -- 新行,换行,New-Line, Line Feed (LF)
0x0d -- 回车,Carriage Return, (CR)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询