尝试反转char数组时出错

Mat*_*t M 2 c

我正在努力改进C++(我知道一点).我正在研究字符数组.我找到了一个练习,其目标是反转一个字符数组(在我从一个整数转换后).我收到以下错误(使用VS2005):

运行时检查失败#2 - 变量'revBuffer'周围的堆栈已损坏.

当我单步执行代码时,我会注意到以下内容:

revBuffer = 0x0012fe40"100899ÌÌ","998001"

相关代码如下.

    char buffer[5];
    char revBuffer[5];
    int i;
    int j=5;
    long number = 998001;

    itoa(number, buffer, 10);

    for(i=0; i<strlen(buffer);i++)
    {
        revBuffer[j] = buffer[i];
        j--;
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.TIA!

Whi*_*ind 7

你正在过度索引revBuffer.它的大小为5,这意味着您可以将其从0索引到4,但在循环中使用的第一个索引是5.


小智 6

您正在转换的数字有六位数 - 您使用的缓冲区仅足以容纳4加上一个空终止符.使缓冲区更大.