关于c语言 转义字符的退格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c语言 转义字符的退格相关的知识,希望对你有一定的参考价值。

书上说将光标向前移动一格
为什么程序\t\bc输出的是
c而不是
c呢?
不是只移动一格吗?

严格地说,不是退一格,面是相当于按一下退格键,回到上一个输出的字符的起始位置,\t(制表符)是一个字符,占8个英文空格位置,所以\b会回到这个制表符的起始位置.

就像你在WORD中按一下TAB键输入了一个制表符,然后再按一下退格键,光标会回车制表符的起始位置,而不是退一个空格的位置.
参考技术A ��� c
Press any key to continue

就退一个格啊?你是不是看错了?我这很正常啊!!!

C语言——转义字符

转义字符

目录

一、转义字符

二、举例(各种转义字符+判断字符个数)

一、转义字符

1.1转义字符 及其 含义

转义字符含义
\\n换行

\\r

回车
\\b退格符
\\f

进纸符(就是换页,将后面的文本打印到一张新纸)

//不常用

\\a警告字符,电脑响铃
\\t水平制表符
\\v

垂直制表符

//不常用

\\'用于表示一个字符常量 '
\\"用于表示字符串内部的双引号
\\\\用于表示一个反斜杠\\(防止被解释成一个转义字符)
\\?用于表示一个问号?(要输出连续多个问号时使用,防止被解释成三字母词)*①
\\0表示空字符
\\dddddd表示1~3个八进制数字
\\xdddd表示2个十六进制数字

*① ANSI C标准中,定义了9个三字母词,(如"??)"直接printf后会变成"]").但是不同编译器对ANSI C的支持不一样,我用的VS2022就不支持三字母词,栗子如下:


二、举例(各种转义字符+判断字符个数)

2.1 转义字符举例

①\\n和\\r

\\n:

#include <stdio.h>

int main()

    printf("I\\nlove\\nChina\\n");
    
    return 0;

调试结果:  I
                    love
                    China

→ 每写一个\\n,接下来的内容到下一

\\r:

#include <stdio.h>

int main()

    printf("I\\nlove\\rChina\\n");
    
    return 0;

 调试结果:I              

                   China

→\\r 的“回车”跟咱们平时说的“回车”不同,平时说的回车相当于这里的换行,而 \\r  则是让光标返回到本行最开始的位置,如果后面继续输入字符,会逐个覆盖本行原来的字符

②\\b:作用相当于键盘上的Backspace键,显示的时候光标退回前一个字符,但不会删除这个字符,but如果后边有新的字符,新的字符会覆盖退回的那个字符

#include <stdio.h>

int main()

    printf("abcd\\be");
    
    return 0;

调试结果:acbe

③\\t: 水平制表符,相当于键盘上的Tab键

④\\ddd和\\xdd:

以\\ddd为例,ddd表示3个八进制数字(比如:007,072,114(无意义的0可省略)),把这个数字转换成十进制数字,输出即为这个十进制数字对应ASCII码值。

同理,对于\\xdd,\\x是固定的格式,dd表示2个十六进制数字,把这个数字转换成十进制数字,输出即为这个十进制数字对应ASCII码值。

#include <stdio.h>
int main()

printf("\\041 ");
printf("\\073 ");
printf("\\114 \\n");

printf("\\x31 ");
printf("\\x52 ");
return 0;

输出为:

因为第一组三个八进制数字分别对应十进制:33、59、76

第二组两个十六进制数字分别对应十进制:49、82

对照ASCII码表,

 是不是非常显然了呢

2.2 判断字符个数

#include <stdio.h>
int main()

	printf("hello\\ab\\t\\n");
	return 0;

字符数为9,因为\\a、\\t、\\n都是转义字符,当作一个字符来看

②进制-陷阱1

#include <stdio.h>
int main()

	printf("??as:\\629\\test");
	return 0;

字符数为11,这里要注意的是\\629不是一个转义字符,因为“\\ddd”规定的d是八进制数字,而八进制数字每一位只包含0~7中的一个数字,因此\\629是两个字符:“\\62”、“9”

③进制-陷阱2

#include <stdio.h>
int main()

	printf("??as:\\651\\test");
	return 0;

debug时会报错,因为\\651对应十进制425,超过了ASCII码表的范围(0~127)

以上是关于关于c语言 转义字符的退格的主要内容,如果未能解决你的问题,请参考以下文章

C语言常用转义字符表

C语言:转义字符 ++a例子

/b的作用

关于易语言的转义字符

关于易语言的转义字符

语言的转义字符及正则表达式的转义字符的表示