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

时间:2015-11-26 19:07:36

标签: c++ arrays char 64-bit visual-studio-2015

我对C ++很陌生,我必须实现Polybius密码功能。 我将char c-array作为参数传递给了我的函数。 我使用了一个“PROG”的虚拟字符串来测试代码,当我在x64中编译它时它运行得很好(由于某种原因,它被Visual Studio 2015设置为默认值)。但是,如果我将数组传递给x86构建中的函数,它包含奇怪的字符,没有任何附加原因: “PROG \x190§ÎæÏX1”

继承我的代码:

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 ++还很陌生,这让我感到很困惑!?

2 个答案:

答案 0 :(得分:1)

C字符串需要以空值终止。为了使您的程序正常工作,您需要使用:

always @(posedge clk)

答案 1 :(得分:1)

char数组不以空值终止,因此如果char passphrase[] = {'P','R','O','G','\0'}; 后面的字节不为0,则会溢出并打印出垃圾。这是技术上未定义的行为。

要像字符串一样打印char数组,您需要将其终止。