我是C编程语言的初学者,最近我研究了转义序列 。
n means newline b means backspace r means carriage-return
当我在下面的程序中应用这些时,我就得到输出为hai ,任何人都可以解释一下,怎么样?
main() { printf("nab"); printf("bsi"); printf("rha"); }
r
实际上是回车符(它将光标移到行的开头)。
你的程序输出一个新行( n
),然后是“ab”,然后退格( b
)(在b上)“si”,所以你现在在屏幕上有“asi”。
r
将光标移动到行的开头,然后输出“ha”,在屏幕上留下“hai”。
第一条指令将在新行上打印ab
( n
):
>ab
第二条指令在打印si
之前会产生退格 ( b
):
>asi
然后最后一个将在打印之前返回回车符 ( r
):
>hai
首先printf
将打印ab
然后b
将进行退格并打印si
以便最终打印成为asi
。
现在在最后r
将光标移动到开头并打印ha
将替换前两个字符并使最终字符串为hai
( ha
来自最后一个语句,而i
来自之前的结果。)
因为你在第一个n
之后在同一行写了所有内容:
printf( "nab" ); // -> ab on a new line
线路状态: ab
printf( "bsi" );
这意味着ab
减去b
因为退格,然后你将si
添加到该行。
线路状态: asi
最后:
printf( "rha" );
意味着你回到行的开头写ha
。
它导致了hai
。
r
是回车 ,而不是换行 。
不, 'r'
不是换行符, 'n'
实际上是换行符。 恰好是许多现代系统使用'n'
作为换行和回车,使其成为“换行符”。
'r'
是回车符 ,它将光标返回到行的开头。
b用于退格。 也就是说,它删除了刚才写的字符。
r n是将光标返回到当前行中最左侧的位置。
设z表示光标。
声明之后。
n abz
退格后。
az
声明二后。
asiz
回来后。
zbi
声明三后
haiz
在你的代码中
让我们一步一步:
absiha
首先,处理退格。 请注意,即使它是“非擦除”,输出的下一个字符也会覆盖后退的字符:
asiha
现在,回车意味着回到行的开头。 所以“ha”覆盖了“asi”中的“as”:
hai
现在,光标当前位于i上,因此要输出的下一个字符将覆盖i。
需要了解更多c/c++开发分享转义序列在C中产生意外的输出,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享转义序列在C中产生意外的输出相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979559.html