我正在尝试将字母保留在char数组中。但是有4个字母显示出荒唐的人物。
我使用F11按钮逐步运行程序。写下字母,然后在“ Q”之后,直到我写下的“ V”为止,它都显示...PQÿÿÿÿVWXYZ这个字符:'ÿ'
int main()
{
cout << "ALPHABET:";
char alf[] = "";
cin >> alf;
system("PAUSE");
}
我希望:ABCDEFGHIJKLMNOPQRSTUVWXYZ
实际结果:ABCDEFGHIJKLMNOPQÿÿÿÿVWXYZ
答案 0 :(得分:1)
问题在于这一行:
char alf[] = "";
您声明大小为1的char数组,该数组只能容纳空字符串(空终止符)。请注意,std::istream::operator>>
和char *
不能验证数组的大小(它不能验证),因此您将获得Undefined Behavior写入数组,超出范围。解决方案是使用std::string
代替,它将根据需要增长。
int main()
{
std::cout << "ALPHABET:";
std::string alf;
std::cin >> alf;
std::cout << alf << std::endl;
}