【问题标题】:C++ Multi-Dimensional Array saving/loading to file error [closed]C ++多维数组保存/加载到文件错误[关闭]
【发布时间】:2023-03-28 23:03:01
【问题描述】:

我已经在这个 C++ 项目上工作了大约 2 周,但我对有关 2D 数组的一些事情感到困惑。从这里开始是我现在写的代码:

http://pastebin.com/vCsz947Q

我决定将它作为一个 pastebin 链接提供,因为它相当大(它使用 8 个函数),我认为它会节省这篇文章的空间。我是这个网站的新手,如果有更好的方法我不知道,我深表歉意。

问题:

当我使用我创建的“保存座位”功能将我的“字符座位”数组保存到 .dat 文件时,我得到一个文件,它给我以下垃圾字符“Ì”而不是预期的'# '(对于空位)或'*'(如果已购买座位)。

尽管如此,我的函数将保存预期数量的行 (15) 和列 (30)。当我在文件中的这个程序中“购买座位”时,也会放置一个星号。此外,我的程序按预期加载文件,除了......嗯......座位数组中存储了垃圾数据。

我觉得这与我遇到的另一个问题有关,如果我转到“购买座位”功能并说要购买座位,它应该用 * 代替 #,但目前还没有在保存的文件中,它会在预期的位置显示一个星号......这很奇怪。

我完全不知道为什么会发生这种情况,而令人沮丧的是这件事让我无法完成这个程序。我想相信我在 int main 中被其他函数调用的原始数组没有正确更新,但我不知道,这就是我来这里寻求帮助的原因。

感谢您的帮助。

【问题讨论】:

  • 无论您将其放在您的问题中还是将其托管在另一个网站上,这仍然是期望任何人阅读的不合理数量的代码。制作一个最小的、可重复的示例并将其放入您的问题中。
  • 我很抱歉,我以后不会这样做了。

标签: c++ arrays multidimensional-array ifstream ofstream


【解决方案1】:

首先,您的 displaySeatingChart (char displaySeats[ ][30], float displayPrices[ ]) 函数中有一些未定义的行为,其中包含以下内容:

const int rowDisplay = 15;
const int colDisplay = 30;

稍后在你的一个循环中

cout << displaySeats[rowDisplay][colDisplay];

因为在main() 中你定义了

const int rowMain = 15;
const int colMain = 30;
char seating[rowMain][colMain];
float seatPrices[15];

并将seatingseatPrices 都传递给displaySeats 函数。您的代码可能还有其他问题,但这至少是未定义行为的一个明显示例。考虑使用调试器单步调试代码,以更清楚地了解问题的根源。

考虑到您正在使用 C++,请考虑使用 std::vector 而不是数组。这将使您有更大的空间来确定您在实用程序函数中使用的数组项的维度,并减少数组访问中出错的可能性。

【讨论】:

  • 首先感谢您的回复,这一切都非常有用。您提到“未定义的行为”。这实际上是我第一次听到这个词,所以如果我需要更长的时间才能理解,我很抱歉,但是...... 什么是解决未定义行为的好例子?我也会看看你提到的调试器。
  • @Neutral - 欢迎您。如果您是编程新手,那么学习如何使用调试器非常有用。如果不出意外,它将使您能够在运行时分析代码。如果您花时间学习这项技能,我保证您不会认为这是浪费时间。即使它不会使问题变得明显,它也会让您更接近源 - 然后可能会发布一个更简洁的新问题,更有可能产生令人满意的答案。
  • 是的,我是编程新手,所以很多这些对我来说还是很新的。话虽如此,我从来没有机会弄乱调试器,但我会试一试。
  • @Neutral 这是你的第一篇文章,所以不要因任何批评或反对而灰心。阅读网站常见问题并注意。如果您以与常见问题解答一致的方式提出问题,这个地方是一个极好的资源
  • 我按照你的指示,终于意识到我的问题就是你所说的。我确实有一些未定义的行为。我切换了我的数组检查,以便在我的大多数循环中我会寻找 i 和 j,而不是 const ints。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
相关资源
最近更新 更多