\t: 制表符 8个长度
\b: 退格 1个长度
\r: 光标回到行头
\n 换行
现在我们来分析这2中情况
1: 没加\n
(1)\t ********first
(2)\b\b\b ********fi
(3) sh\\\r ********fish (光标在行头)
(4)\'No.1\' 'No.1'**fish(光标在第二个'后面)
(5)结束 'No.1'Press any key to continue (Press any key to continue覆盖了光标后面的)
同理 第二种\n:
(1)\t ********first
(2)\b\b\b ********fi
(3) sh\\\r ********fish (光标在行头)
(4)\'No.1\' 'No.1'**fish(光标在第二个'后面)
(5)\n 'No.1'**fish(光标在第下一行头)
(5)结束 'No.1'**fish'
Press any key to continue
Press any key to continue 只会出现在最后光标的后面,所以你要是想不让这句话挡着,就在最后加上printf("\n");
楼主,我的观点是:无论哪种情况结果都应该是后者。
因为,你的printf的语义描述的问题在于\r回到行首,之后继续打印的字符都应该认为是插入到光标当前位置,因此原来的"\tfish\"是不会被摸掉地。
无论是否增加\n 都不会影响这个输出效果,我的测试环境是xp下vc++ 6.0 sp6
楼上正解。顺便加上
#include
getch();
你想改成什么样子,要输出什么都没说
你在网上查点资料,仔细看一下\t\b\r的用法,对照着一步一步往下写