[英]C++ char-array parameter contains weird characters on x86 compile
我是C ++的新手,必须实现Polybius密码功能。 我将char c数组作为参数传递给函数。 我使用了一个虚拟字符串“ PROG”来测试代码,当我在x64中编译时(它由于某些原因被Visual Studio 2015设置为默认值),它可以完美地工作。 但是,如果我将数组传递给x86构建中的函数,则其中包含奇怪的字符,而没有出现的原因:“ PROG \\x190§ÎXÏ1”
这是我的代码:
void createPolybiusMatrix(const char keyphrase[]) {
//Keyphrase contains "PROG" on x64 but "PROG\x190§ÎæÏX1" on x86!
//Do Stuff
}
int main() {
char passphrase[] = {'P','R','O','G'};
//Everythings fine here, passphrase contains "PROG" on both platforms.
createPolybiusMatrix(passphrase);
return 0;
}
有任何想法吗? 我对C ++还是很陌生,这让我很困惑!
C字符串需要以空值结尾。 为了使程序正常工作,您需要使用:
char passphrase[] = {'P','R','O','G','\0'};
char数组不是以空值结尾的,因此,如果'G'
之后的字节不为0,则将溢出并打印出垃圾。 这是技术上未定义的行为。
要像打印字符串一样打印char数组,需要将其以null终止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.