欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

vc6 中 printf 中的退格(\b)为啥不会老老实实地删掉一个字符

更新时间: 2014-05-15 18:38:43 责任编辑: Author_N4

 

VC6 中 printf 中的退格(\b)为什么不会老老实实地删掉一个字符?
在这种情况下显示正常:
C/C++ code
#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);
}

运行效果为:
>>>0-12

但如果前面加个换行符就不正常了:
C/C++ code
#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);
}

运行效果为:

>>20-1

这还有个更奇怪的:
C/C++ code
#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);
}

运行效果为:
012
>>0-2

这是 VC6 的 BUG 还是我对转移字符的理解有不对的地方?

--参考方法--
不能算是BUG,对于\b的解释并没有非常统一的标准。
--参考方法--
C/C++ code
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 的
--参考方法--
探讨

c 中本来就没有 基本的输入输出函数,调用 os 的

--参考方法--
printf中\b后光标移动过多了,移动某些字符下面继续打印就把原字符给替换了。
试了下,win7 VS2008
-----------------------
std::cout 是在下面这个函数中将字符串分解后最终调用API函数WriteFile,每次写入单个字符,结果正常。
C/C++ code

virtual streamsize __CLR_OR_THIS_CALL xsputn(const _Elem *_Ptr,
        streamsize _Count)

--参考方法--
windows里,输出到屏幕上退格(\b)不会表现出来。。
如果输出到打印机上或者输出至文件,退格才能体现出退格的真正作用,相当于对退格这个字符做了模拟人控制的处理。。。
--参考方法--
探讨
在这种情况下显示正常:

C/C++ code

#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);
}

运行效果为:
>>>0-12

但如果前面加个换行符就不正常了:

……
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-15 18:38:43
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/493434/
本文WWW.DOC100.NET DOC100.NET版权所有。