编程论坛
注册
登录
编程论坛
→
C++教室
我又来求助了,这次是编译问题,同样的代码放在不同的编译器里面,运行结果不一样。
纯黑色
发布于 2013-08-09 10:10, 852 次点击
代码已经放在附件里面了。
可以编译成功,但是:
放在c-free3.5里面编译后运行结果跟期望值一样。
但是放在 vs2008中编译运行结果却是乱码。
我昨天晚上做了很久的实验,做不出结果来。求大神看看,这次我实在是找不出原因了。
只有本站会员才能查看附件,请
登录
6 回复
#2
peach5460
2013-08-09 11:17
没看代码
先开个题...
不同编译器结果不一样...这是小概率的事情
但是是有可能的...
而且没有孰对孰错...
PS:另外,我可以吐槽c-free吗?
我从来就没有看懂过C-FREE的编译信息过...
在我的第一感官印象里这个编译器很烂...
#3
lintaoyn
2013-08-09 14:44
程序代码:
void
AES::KeyExpansion(
unsigned
char
* key,
unsigned
char
w[][
4
][
4
])
{
int
i,j,r,c;
unsigned
char
rc[] = {
0x01
,
0x02
,
0x04
,
0x08
,
0x10
,
0x20
,
0x40
,
0x80
,
0x1b
,
0x36
};
for
(r=
0
; r<
4
; r++)
{
for
(c=
0
; c<
4
; c++)
{
w[
0
][r][c] = key[r+c*
4
];
//
3 + 3*4 key的长度至少要有16个字符, 这里越界了。
}
}
unsigned char key[] = "superpol"; // superpol 加长。
你的测试代码 key的长度太短了,越界读取数据了。把 key 的长度加长到16个字符以上就可以了。
#4
纯黑色
2013-08-09 16:33
回复 2 楼
C-FREE给的提示确实看不懂 囧。
能推荐个轻量级的编译器么?
我觉得VS太臃肿了,不适合学新东西的时候用。
#5
peach5460
2013-08-09 19:45
我用得codeblock,之前用的codelite
据说dev-c++还行
C-free我真心看不懂他的编译提示,编译错误提示跟真正的错误差十万八千里
#6
纯黑色
2013-08-09 22:37
回复 3楼 lintaoyn
不行啊,我把key的字符串设到了24,依然不行。
#7
纯黑色
2013-08-11 13:50
回复 3楼 lintaoyn
忘记说了,我的locle是英文(美国)
1