Стек вокруг переменной 'x' поврежден - PullRequest
1 голос
/ 16 апреля 2019

Напишите программу, которая просит пользователя ввести семь целых чисел. Программа должна использовать массив хранить эти значения. После того, как пользователь введет все значения, программа должна распечатать содержимое каждого элемента массива в стиле, показанном ниже. Наконец, программа должна суммировать семь элементов и распечатать полученную сумму.

Моя программа делает именно то, для чего она предназначена, однако, как только она будет завершена, я получаю «Ошибка проверки времени выполнения # 2 - стек вокруг переменной« целое число »был поврежден». Я просмотрел все свои заметки и не могу понять, почему, извините, если это очень просто, я только учусь программировать.

#include <stdio.h>

int main(void)
{
    int integer[6];

    printf("Please enter seven integers:\n");

    printf("\nInput 1: ");
    scanf("%d", &integer[0]);

    printf("Input 2: ");
    scanf("%d", &integer[1]);

    printf("Input 3: ");
    scanf("%d", &integer[2]);

    printf("Input 4: ");
    scanf("%d", &integer[3]);

    printf("Input 5: ");
    scanf("%d", &integer[4]);

    printf("Input 6: ");
    scanf("%d", &integer[5]);

    printf("Input 7: ");
    scanf("%d", &integer[6]);

    printf("\nArray input was: { %d, %d, %d, %d, %d, %d, %d }\n", integer[0], integer[1], integer[2], integer[3], integer[4], integer[5], integer[6]);

    int sum = integer[0] + integer[1] + integer[2] + integer[3] + integer[4] + integer[5] + integer[6];

    printf("\nThe sum of the array elements is: %d", sum);

    return 0;
}

Таким образом, выходные данные соответствуют ожидаемым, однако я не могу понять, почему переменная повреждена.

1 Ответ

3 голосов
/ 16 апреля 2019

В вашем массиве всего шесть (6) элементов, но вы прочитали семь (7), что повредило память за пределами выделенного массива.Измените определение массива на:

int integer[7];

Помните, что C отсчитывается от нуля, тогда как число в скобках в определении массива - это количество элементов, или размер массива.Таким образом, действительные индексы int integer[6] будут 0, 1, 2, 3, 4, 5, НЕ , включая 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...