有人可以解释\n、\b、\r 在 C 中的行为吗?

标签 c

我有以下示例

 #include <stdio.h>
    #include<conio.h>

    void main()
    {
        printf("\nab");
        printf("\bsi");
        printf("\rha");
        _getch();
    }

首先,我不明白 printf 函数是如何工作的。我一直在尝试找到解释这一点的教程,但它们太基础了。

理解这一点的方法是有一个光标读取输入中的每个字符。例如,如果我们只有一行:

printf("\bsi")

凭直觉,我认为它只是输出字符串 si,因为 si 之前没有先前的字符,但输出是 i。我还想补充一点,\b 考虑了另一个 printf 的输入,这很奇怪。

我还认为所有这些 printf 都相当于一个 printf。像这样的东西:

printf("\nab\bsi\rha");

这让我觉得铁窗后面正在发生一些我无法真正解释或说出它是什么的事情。我认为这与输入上的某个指针有关,或者 printf 将输入存储在缓冲区中并以某种方式读取它。

有人能详细解释一下 printf 的工作原理吗?

...

问题有点不同,因为我知道这是同一个练习,但我对此有不同的看法并以不同的方式处理它。

最佳答案

转义序列

enter image description here

转义序列用于表示字符串文字和字 rune 字中的某些特殊字符。 上述转义序列可用(额外的转义序列可以提供实现定义的语义):

关于有人可以解释\n、\b、\r 在 C 中的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43199647/

相关文章:

c++ - 从字符串中读取十六进制值并将它们存储到 c/c++ 中的整数数组中

c - Xlib 隐藏然后显示原始状态的窗口

c - “下标值既不是数组也不是指针也不是 vector ”错误

c - 为什么 HeapFree 之后堆内存仍然可以访问

c - C中循环链表的显示函数

c - 如何 printf ("%0x") 并根据类型确定位数?

c - 将 argv[] 传递给 CreateProcess() 的方法

c - 我是否转换 mkl_malloc 的结果?

c - dlclose()/FreeLibrary()失败后句柄的情况

类型转换负数