VC6 中 printf 中的退格(\b)为什么不会老老实实地删掉一个字符?
在这种情况下显示正常:
#include <stdio.h>void main(){ int a,b,c; a = 0; b = 1; c = 2; printf(">>>%d-%d\t\b%d\n",a,b,c);}
#include <stdio.h>void main(){ int a,b,c; a = 0; b = 1; c = 2; printf("\n>>>%d-%d\t\b%d\n",a,b,c);}
#include <stdio.h>void main(){ int a,b,c; a = 0; b = 1; c = 2; printf("%d%d%d\n>>%d-%d\t\b%d\n",a,b,c,a,b,c);}
printf(">>>%d-%d\t\b%d\n",a,b,c);
[解决办法]
换用cprintf
#include <conio.h>
cprintf
[解决办法]
或者在cmd窗口中输入命令:
你的exe名字 >out.txt
然后用WinHex软件或UltraEdit软件的字节模式查看out.txt文件中的原始字节内容。
[解决办法]
打印时,\b不会删除字符,只是将光标前移一位,不过楼主这个结果移动得比较奇怪
在c++的 std::cout中是正常的,不知道printf是个什么机制。
mark.
[解决办法]
想知道printf是什么机制:
先
http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express
右边Visual C++ 2010 Express下面的Select language...下拉选‘简体中文’,再按Install Now按钮
再参考
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\output.c
或者在Visual C++ 2010 Express中单步到printf语句之前,然后按Alt+8,F11
[解决办法]
vs2010 不仅跳过了 tab 产生的 空格,而且删除了 1
[解决办法]
c 中本来就没有 基本的输入输出函数,调用 os 的
[解决办法]
virtual streamsize __CLR_OR_THIS_CALL xsputn(const _Elem *_Ptr, streamsize _Count)
[解决办法]
windows里,输出到屏幕上退格(\b)不会表现出来。。
如果输出到打印机上或者输出至文件,退格才能体现出退格的真正作用,相当于对退格这个字符做了模拟人控制的处理。。。
[解决办法]