繁体   English   中英

C ++ char-array参数在x86上包含奇怪的字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM