int n;
cin >> n;
char** matrix = new char*[n];
for (int i = 0; i < n; i++)
{
cin >> (matrix[i] = new char);
}
但正如我输入的那样 3 45523 36 578
遇到断点并且程序停止
但如果我输入 3 45523 368 578
它工作正常 不确定为什么会发生这种情况
答案 0 :(得分:0)
我不是C ++方面的专家(如果你的代码需要一个C ++编译器,那么它不是一个错误,那么它纯粹是一个C ++问题),但我怀疑你发生了什么&# 39;每个字段重新分配一个char
,并溢出该一个字节的缓冲区。如果你为每个字段分配了8个字节,那么事情会有所不同,相反,如下所示:cin >> (matrix[i] = new char[8]);
...更好的是,它是最明智的,大多数C ++都可以使用std::vector<char>
(但是,您仍然需要为示例中的字段保留八个字节)或std::string
。