c++ - C++ char 数组赋值
问题描述
我正在尝试将字母表保存在 char 数组中。但是4个字母显示了荒谬的字符。
我使用 F11 按钮逐步运行程序。写了字母表,在“Q”之后,直到“V”,无论我写什么,它都显示...PQÿÿÿÿVWXYZ 这个字符:'ÿ'
int main()
{
cout << "ALPHABET:";
char alf[] = "";
cin >> alf;
system("PAUSE");
}
我期望:ABCDEFGHIJKLMNOPQRSTUVWXYZ
实际结果:ABCDEFGHIJKLMNOPQÿÿÿÿVWXYZ
解决方案
问题在于这一行:
char alf[] = "";
您声明大小为 1 的 char 数组,它只能保存空字符串(空终止符)。请注意,std::istream::operator>>
withchar *
不验证数组的大小(它不能),因此您将未定义的行为写入数组而超出范围。解决方案是使用std::string
它将根据需要增长。
int main()
{
std::cout << "ALPHABET:";
std::string alf;
std::cin >> alf;
std::cout << alf << std::endl;
}
推荐阅读
- javascript - 如何使用 *ngFor 迭代多维数组
- ios - 表视图单元格在引用它们的表视图被释放后不会被释放
- oracle - Oracle 10g 程序编译错误
- angular - 我在 Todos 项目期间遇到错误:http://localhost:4200/:404 Not Found 的 Http 失败响应
- r - 匹配来自两个不同数据集(dbSNP ID)的 col 值并合并数据集
- c - 向数组添加元素,旧值变为 0 但新显示
- javascript - WebGL 集成禁用输入字段
- c# - 从 Sql 中检索图像,“参数无效”
- git - Azure devops 代码更改未在 github 中同步
- javascript - 我应该如何将变量从我的外部路由异步传递到 Node.js 中的 javascript 控制器?