【发布时间】:2020-08-09 06:19:36
【问题描述】:
我的MinGW-w64的版本是:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
我的系统版本是:Windows 10 2004
当我尝试使用 MinGW-w64 的 g++ 编译和运行这个源文件时,我遇到了麻烦。 这个文件的名字是“temp.cpp”
#include <iostream>
using namespace std;
int main()
{
char player1[8] = {0}, player2[8] = {0};
cin >> player1 >> player2;
cout << player1 << ' ' << player2;
return 0;
}
我通过输入这行代码在 PowerShell 中构建并运行了这个文件。
g++ -g .\temp.cpp -o .\temp.exe; .\temp.exe
然后我输入了输入。
Rock Scissors
按下回车键后。我明白了。
Scissors
第一个单词没有打印出来。
然后我使用 VS Code 来调试源文件。我输入输入后发现,player1[0] 中的数据没有被“R”替换。相反,它仍然是0。
然后我将整个mingw64文件夹复制到另一台电脑上再试一次,同样的事情又发生了。
然后我用scanf()替换了cin。
#include <iostream>
using namespace std;
int main()
{
char player1[8] = {0}, player2[8] = {0};
scanf("%s %s", player1, player2);
printf("%s %s", player1, player2);
return 0;
}
同样的事情又发生了。
然后我下载旧版MinGW-w64:x86_64-5.4.0-release-posix-seh-rt_v5-rev0.7z
使用旧版本,现在可以正常打印了。
为什么?
【问题讨论】:
-
您的数组长度应为 9 个字符,以便允许 8 个字符用于剪刀加空终止符,或者只使用
std::string代替