-3

我有这两段代码:

int main(void)
{
    printf("\nab");
    printf("\bsi");
    printf("\rha");
    return 0;
}

对于第一个输出是hai. 但是,如果我这样写:

int main(void)
{
    printf("\nab");
    printf("\bsi");
    printf("\rsha");
}

结果的输出只是sha. 这里发生了什么?(我也在使用gcc

4

2 回答 2

1

1)

 printf("\nab");

它显示ab

printf("\bsi");

\b删除最后一个字符(\b= 退格)。然后你追加  si

它显示asi

printf("\rha");

\r返回到行首(\r = 回车)。然后你打印ha. 因此,您删除了的前 2 个字符asi

因此,它显示hai

2)

前两个步骤的解释相同。

在第三步中,您返回到行\r首并打印 3 个字符,擦除之前存在的 3 个字符。

于 2013-10-09T12:54:29.977 回答
0

简短说明:

\n = moves to next line
\b = backspace - deletes 1 char
\r = moves cursor to 1st column of the line

所以你得到

ab
asi //for \bsi
hai // for \rha
于 2013-10-09T12:54:48.647 回答