C /C++ : 转义字符 (***)

目录

C语言——转义字符

\t \r \n转义字符

c 语言转义字符\r,\t,\v,\f的用法,,举例子详细说明

对不常用转义字符 \r \v \f 的一点点个人理解   https://blog.csdn.net/m0_51183870/article/details/111477557

C、C++ 中\t \n用法

详解那些C++中特殊的转义字符(\b, \r, \f 等)

=============================

详解那些C++中特殊的转义字符(\b, \r, \f 等)

前言

            我们在学转义字符时,一般教材上就是讲了部分几个,但是一些特殊的却一般讲得比较敷衍,许多时候我们都是一知半解的,这一期,我带大家来详细了解一下。

\b的用法

            \b的意思是:退格,即backspace。但是它和按键Backspace不一样。它是起到了移动光标的作用。

            *光标:我们在打字的时候,可以看到有一个竖杠,就在我们刚刚打出的字的右边,表示着下一个字将要处在的位置。(应该大家都知道,这里就说一句)

            于是,我们通过\b,就是前移光标。比如说:

        #include<iostream>
        using namespace std;
        int main()
        {
            cout << "请在下方输入一个数据:\n";
            cout << "输入: ________\b\b\b\b\b\b\b\b";
            int a;
            cin>>a;
            cout<<endl<<"刚刚输入的是:"<<a;
            return 0;
        }

             你可以发现,当需要输入时,光标移动到了横线的最前面,有了一点答题系统的感觉了。然后输入的数,会覆盖前面的一部分横线。

            这里\b的作用是将光标前移一位,横线包含8个下划线,就要用8个\b.

            然后,我们再来看看下一个程序。

    #include<iostream>
    using namespace std;
    int main()
    {
        cout << "请在下方输入一个数据:\n";
        cout << "输入: ________\b\b\b\b\b\b\b\b";
        cout<<"占位符";
        int a;
        cin>>a;
        cout<<"刚刚输入的是:"<<a;
        return 0;
    }

            程序运行结果:

        请在下方输入一个数据:
        输入: 占位符3_
        刚刚输入的是:3

            这里在输出    “输出:_______”    后,将光标移到冒号后面,再输出“占位符”3字。

            于是,我们得出,无论是对于cout流还是cin流,\b的作用都是光标前移一位,同时会覆盖后面的内容。

\r 的用法:注意与 \n 的区别

            \r还是一个比较混淆的概念。因为经常在字面上和\n搞不清,我们必须仔细思考,想一想。

            在C++中,\r的意思虽然是所谓的回车,但是不是我们广为人知的换行意思,而是将光标移到本行开头的意思。换行的意思是\n,需要搞清楚。

            比如:

        #include<iostream>
        using namespace std;
        int main()
        {
            cout << "请在下方输入一个数据:\n";
            cout << "________________\r";
            int a;
            cin>>a;
            cout<<"刚刚输入的是:"<<a;
            return 0;
        }

            运行结果:

        请在下方输入一个数据:
        33333424________
        刚刚输入的是:33333424

            这里和\b的情况差不多,就等于一行\b。

*\f的用法

            \f的意思是换页,将光标移到下一页开头,但是在我们的C++中完全不用理会,直到即可:

            在C++中,\f仅仅会打出一个小正方形□,代表换页符,而非所谓的清屏换页,只有在高阶,遇到特殊的地方才有所谓的效果,现在不用管。

*\v的用法

            \v的意思是竖向跳格,就是将光标移到下一行的同样位置。

            但是,在C++中,\v照样会输出一个替代的符号□,我们也不必深究。

————————————————
版权声明:本文为CSDN博主「金博欣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jinboxin_/article/details/124555651

c 语言转义字符\r,\t,\v,\f的用法,,举例子详细说明

\r:回车符(使活跃位置返回当前行的开端)
\t:水平制表(光标向前移动)
\v:垂直制表(光标向下移动)
\f:换页符(这是一个非显示的字符,只在控制打印机的时候有用.例如你将程序的结果重定向到打印机,如果输出中遇到\f,就会引起一个换页)

C、C++ 中\t \n用法

\t tab
\n next line
\r return

\t:水平制表(跳到下一个Tab位置

\v:垂直制表(光标向下移动) // ??


\r:回车,将当前位置移到本行开头

\n:换行

\r:回车,相当于光标回到本行首位置,不会换行;

另外有一个\n,换行,表示光标换到下一行;

因此在windows下通常使用\r\n,表示回车换行,即光标到第二行的首位置,相当于按了键盘上的Enter键(有些是标为return键)

\t: 水平制表符,相当于按了键盘上的TAB按键,一般是后移一段位置。通常宽度相当于8个空格的位置,但有些软件允许设置tab的宽度。

下面一个例子:用\t做了两个 出的结果怎么不一样?


正解:\t是换列符,是8个二进制位为一列,即换到当前列的下一列的开始位置,第四个输出语句,输出完8后,提示符在第二列上,所以转到下一列,就会在第三列,所以a和8之间有一个列的宽度也就是有8个空格,而第二句的输出语句,最后一个0输出后的当前位置是在第三列的第4个位处,转到下列就到第五列的第一个位,因此这里的a和0之间只有4个空格!
————————————————
版权声明:本文为CSDN博主「xueruifan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xueruifan/article/details/45307567

C语言——转义字符

转义字符(Escape character),所有的ASCII码 都可以用 “\”数字(一般是8进制数字)来表示。

而 C中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

常见转义字符

转义字符    释义
?    在书写连续多个问号时使用,防止他们被解析成三字母词
\`    用于表示字符常量`
\"    用于表示一个字符产内部的双引号
\\    用于表示一个反斜杠,防止它被解释为一个转义序列符
\a    警告字符,蜂鸣
\b    退格符
\f    进纸符


\n    换行
\r    回车
\t    水平制表符
\v    垂直制表符


\ddd    ddd表示1~3个八进制的数字。如:\130X
\xdd    dd表示2个十六进制数字。如:\x30 0

下面是它们具体的使用方法

    ?

在某些编译器下 ,会将 “ ??) ” 解析成 三字母词 “ ] ” ,
所以在打印 “ ??) ”时,为了防止被解析成三字母词,在它前面加 " \",改成 ” ??) “ 。

    \`

像这样打印单引号时会造成编译器无法编译:

printf("%c",''');

在 ’ 前面加 \ 将它转义就可以打印出来了,

像这样

printf( "%c",' \' ');

在这里插入图片描述

    \"

与 \` 用法相同,这里就不再赘述了。

    \\

用来表示一个反斜杠,防止它被解释为一个转义序列符,

当你想打印一个文件路径时,如果直接这样写:

printf("c:\test\test.c");

那打印出来的结果将是这样的:

这是因为 \t 会被编译器解析为水平制表符,

正确的写法是在 \ 的前面加 \ 进行转义, 防止被解析为 \t,

printf("c:\\test\\test.c");

 打印出来的结果是这样的:

    \a

在打印 \a 时会触发电脑上的蜂鸣器.。

    \ddd

ddd表示1-3个八进制的数字。将ddd三个数字转换成十进制,十进制数对应的ASCAII就是结果。

猜一猜下面的代码打印出的是什么?

printf("%c",'\130');

在这里插入图片描述

​为什么会是X?

因为输出结果为字符型,将八进制数字130转换为十进制为88,然后输出在[ASCII表](ASCII_百度百科 (baidu.com))中对应的字符X。

如果输出类型为整型,打印的结果就是八进制130转换为十进制的结果

像这样:

printf("%d",'\130');

在这里插入图片描述

​ 其实 \ddd 最多只支持三位数字,并且三位数字也不是任意的(每个数字不能大于8,一旦大于8它就不是八进制数了),一旦大于等于八进制数 '/400 '(十进制256=8进制400)就超过了ascall码的范围,编译器就会报错。另外大于三位,或者遇到非八进制数字时则转换结束,直接取末尾数字。

    \xdd

同样首先要了解的是dd表示2个十六进制数,

猜一猜下面的代码打印出的是什么?

printf("%c",'\x30');

 为什么是0呢?

因为输出结果为字符型,将十六进制数字30转换为十进制为48,然后输出在ASCII表中对应的字符 0。

同样的,如果输出类型为整型,打印的结果就是十六进制30转换为十进制的结果。

printf("%d",'\x30');


来看一看下面的练习题吧

1. 猜猜下面的代码打印的数字是多少?

printf("%d",strlen("qwer t"));

答案是:

为什么是6呢?

    首先,strlen求得是字符串长度
    其次,空格也是一个字符
    然后,字符串末尾的\0不算是字符

所以打印的结果就是6了。

2. 再猜猜下面的代码打印的数字是多少?

printf("%d",strlen("c:\test\628\test.c"));

答案是:

 为什么是14呢?

因为这个字符串中有转义字符存在。

红色方框里的部分都会被转义成一个字符,

这里要注意这里的628不是八进制数字,62是八进制数字
八进制数字每个数字最大不能大于7,大于7就要进位了。

所以一共有14个字符。

————————————————
版权声明:本文为CSDN博主「Kevin_.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45559559/article/details/126132152

====================

\t \r \n转义字符 

  • t \r \n都是转义字符,空格就是单纯的空格,输入时可以输入空格
  • \t 的意思是 横向跳到下一制表符位置
  • \r 的意思是 回车
  • \n 的意思是回车换行
  • 所有的转义字符和所对应的意义:

  • 转义字符

    意义

    ASCII码值(十进制)

    \a

    响铃(BEL)

    007

    \b

    退格(BS) ,将当前位置移到前一列

    008

    \f

    换页(FF),将当前位置移到下页开头

    012

    \n

    换行(LF) ,将当前位置移到下一行开头

    010

    \r

    回车(CR) ,将当前位置移到本行开头

    013

    \t

    水平制表(HT) (跳到下一个TAB位置)

    009

    \v

    垂直制表(VT)

    011

    \\

    代表一个反斜线字符''\'

    092

    \'

    代表一个单引号(撇号)字符

    039

    \"

    代表一个双引号字符

    034

    \?

      

    代表一个问号

      

    063

      

    \0

    空字符(NULL)

    000

    \ooo

    1到3位八进制数所代表的任意字符

    三位八进制

    \xhh

    1到2位十六进制所代表的任意字符

    二位十六进制

    注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值