Need help understanding how \n, \b, and \r will re

2020-02-08 18:34发布

I wrote the following program in the C and when I run it, I was surprised by looking at the output.

Here is the program

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

The output is :- hai whereas I was expecting "absiha" since \n is for new line, \b is for backspace(non erase) and \r is for carriage return. So I was expecting that curson would be at "i" character because \r has been applied but when I run it and saw the output I was totally surprised and confused. Can anyone please explain me the output?

2条回答
祖国的老花朵
2楼-- · 2020-02-08 19:16

Let's take it one step at a time:

<new line>ab<backspace>si<carriage return>ha

First, handle the backspace. Note that even though it is "non-erase", the next character to be output would overwrite what was backspaced over:

<new line>asi<carriage return>ha

Now, a carriage return means to go back to the beginning of the line. So the "ha" overwrites the "as" in "asi:

<new line>hai

Now, the cursor is currently sitting on the i, so the next character to be output would overwrite i.

查看更多
beautiful°
3楼-- · 2020-02-08 19:20

Visit http://en.wikipedia.org/wiki/Escape_sequences_in_C

Escape Sequence Character \a Bell (speaker beeps) \b Backspace (non-erase) \f Form feed/clear screen \n New line \r Carriage Return \t Tab \v Vertical tab \\ Backslash \? Question mark \' Single quote \" Double quote \xnn Hexadecimal character code nn \onn Octal character code nn \nn Octal character code nn

查看更多
登录 后发表回答