This question already has answers here:
Escape sequences are producing unexpected output in C [duplicate]
                                
                                    (7个答案)
                                
                        
                                6年前关闭。
            
                    
我有这两段代码:

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


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

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


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

最佳答案

1)

 printf("\nab");


它显示ab

printf("\bsi");


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

它显示asi

printf("\rha");


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

因此,它显示hai

2)

前两个步骤的解释相同。

在第三步中,您以\r返回到该行的开头并打印3个字符,从而删除了之前出现的3个字符。

09-11 17:21