C++字符数组参数在x86编译中包含奇怪的字符
C++ char-array parameter contains weird characters on x86 compile
我对C++很陌生,我必须实现Polybius密码函数。我向函数传递了一个字符c数组作为参数。我使用了一个伪字符串"PROG"来测试代码,当我在x64中编译它时,它运行得很好(由于某种原因,Visual Studio 2015将其设置为默认值)。然而,如果我将数组传递给x86构建中的函数,它会包含一些奇怪的字符,原因并不明显:"PROG\x190§岛X1"
这是我的代码:
void createPolybiusMatrix(const char keyphrase[]) {
//Keyphrase contains "PROG" on x64 but "PROGx190§ÎæÏ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字符串需要以null结尾。为了使您的程序正常工作,您需要使用:
char passphrase[] = {'P','R','O','G',' '};
char数组不是以null结尾的,所以如果'G'
后面的字节不是0,则会溢出并打印出垃圾。这在技术上是未定义的行为。
要像打印字符串一样打印char数组,需要对其进行null终止。
相关文章:
- 计算在同一位置至少包含一个常用字符的不同字符串对
- 无法将字符数组转换为包含 utf-8 字符的字符串
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
- VSCode C++调试文件名中包含中文字符的文件时插件损坏
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 尝试使用 indexOf 创建一个 if 语句来检查字符串是否包含字符.有一点麻烦
- 如何制作一个只包含字符的简单加载屏幕
- 如何检查字符串是否包含所有这些:数字、字母和特殊字符
- 如何比较文件中包含的下一个字符
- 是否可以将无符号字符数组reinterpret_cast到仅包含C++中无符号字符成员的结构指针
- 如何获取包含 NULL 字符的外壳代码字符串的长度
- 如果字符串向量包含字符'p',如何检查 c++
- C++ 检查 UTF8 字符串包含指定的字符
- 在 Windows 上,stat 和 GetFileAttributes 对于包含奇怪字符的路径失败
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 字符串只包含有效的字符?
- 如果必须包含西里尔字符,如何将 char* 转换为 std::string?
- 当字符包含表情符号时如何比较字符?
- cout 打印的字符 [] 包含的字符数超过设置长度