0xAA55 发表于 2014-4-27 01:51:02

【VC6】VC6上printf的一个BUG

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

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

Jerry 发表于 2014-5-16 11:14:48

这不是VC6上printf的BUG
??> 是C语言“三字符序列”,编译器预编译阶段转换为 }

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

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

printf("<????\>\t0x%08X\t<No name>\n",pFuncAddr);

0xAA55 发表于 2014-5-17 16:50:18

Jerry 发表于 2014-5-16 03:14
这不是VC6上printf的BUG
??> 是C语言“三字符序列”,编译器预编译阶段转换为 }



好吧,我还不知道呢

fsjaky 发表于 2014-7-7 13:15:10

这个不清楚
页: [1]
查看完整版本: 【VC6】VC6上printf的一个BUG