找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2935|回复: 3

【VC6】VC6上printf的一个BUG

[复制链接]
发表于 2014-4-27 01:51:02 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
当你运行如下的时候:printf("<????>\t0x%08X\t<No name>\n",pFuncAddr[i]);

你会发现,输出的<????>变成了<??}
不知道这是为什么。后来通过加空格解决了,如下:
printf("<??? >\t0x%08X\t<No name>\n",pFuncAddr[i]);
那么,总之,用VC6,不要在printf里面输出??>这样的字符串。。。别的编译器没试过。
真蛋疼
回复

使用道具 举报

发表于 2014-5-16 11:14:48 | 显示全部楼层
这不是VC6上printf的BUG
??> 是C语言“三字符序列”,编译器预编译阶段转换为 }

这样的字符有9个, 它们全都是以两个问号开始,由第三个字符决定三字符组所表示的标点符号是什么。
字符串 转义后的含义
??=    #
??(    [
??)    ]
??/    \
??<    {
??>    }
??'    ^
??!    |
??-    ~

不必通过加空格解决,影响输出美观
解决方案是加入\进行转义
printf("<???\?>\t0x%08X\t<No name>\n",pFuncAddr[i]);

printf("<????\>\t0x%08X\t<No name>\n",pFuncAddr[i]);
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2014-5-17 16:50:18 | 显示全部楼层
Jerry 发表于 2014-5-16 03:14
这不是VC6上printf的BUG
??> 是C语言“三字符序列”,编译器预编译阶段转换为 }

好吧,我还不知道呢
回复 赞! 靠!

使用道具 举报

发表于 2014-7-7 13:15:10 | 显示全部楼层
这个不清楚
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-23 21:27 , Processed in 0.035191 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表