【问题标题】:strange output when I cout an array当我计算一个数组时奇怪的输出
【发布时间】:2013-12-03 01:59:22
【问题描述】:

我以前从未见过这样的事情,我无法弄清楚可能是什么原因造成的。这是硬件,所以您不必为我修复它,只需给我一个线索,看看出了什么问题。这是我的代码。

void countChars(ifstream& inData, string filename, char x[])
{
for(int i=0; i < 58; i++)
    x[i] = 33+i;

cout << x << endl;
}

这是我的输出

【问题讨论】:

  • Z 之后的所有内容

标签: c++


【解决方案1】:

您忘记终止您的char[]

std::cout.operator&lt;&lt;(char*) 使用\0 来告诉在哪里停止。

这是重复的:this

【讨论】:

  • 谢谢。我们还不能使用 std:: 东西,因为我们还没有学会它,但现在你这样解释我理解得更好了
  • @user2087867 Np,根据我自己的经验,学校/大学不能教 C++。所有的运算符实际上只是函数调用。
【解决方案2】:

在 cout 之前添加 x[58] = 0;

【讨论】:

  • 这种工作,但我得到一个错误,说 chararray 周围的堆栈已损坏。
  • 是的,@Richard,这是不安全的建议,除非您通过提醒 OP 确保数组足够大以容纳额外的 char 来对其进行限定。您刚刚教 OP 将缓冲区溢出写入他的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 2021-04-02
相关资源
最近更新 更多