vc6的printf函數結果囘卷的問題

来源:互联网 发布:淘宝上的腾讯会员账号 编辑:程序博客网 时间:2024/06/06 20:38
我寫了一個程序,其中用到了格式化輸出的問題。於是我自然而然的想到使用printf實現。但是卻沒想到,在控制臺的最後一行卻出現了問題。代碼是這樣的.
#define FMT "%s Old=%s, the new[other=exit]:"
char *p = "SecurityLevel (0=authNoPriv 1=authPriv 2=noAuthNoPriv):";
char *oldValue = "0";
int main(void)
{
...
 // 在屏幕的末行
 printf(FMT, p, oldValue);
 {
  int newValue = 0;
  scanf("%d", &newValue);
 }
...
}
結果是由於在合成成結果是"SecurityLevel (0=authNoPriv 1=authPriv 2=noAuthNoPriv) Old=0, the new[other=exit]:",超出了80個字符,於是乎超出的部分"xit]:",並沒有換行,而是覆蓋了行首的字符。我試了各種方法都沒有解決。最後解決方案是裁減FMT的内容,刪除方括號及其中的内容,由於内容沒有超過80個字符,所以問題就沒有出現了。也許以後有其他更好地解決辦法。這肯定是微軟VC庫的bug.
原创粉丝点击