Задание со структурой - Stack around the variable 'd' was corrupted - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В конце программы выдает такую ошибку : Run-Time Check Failure #2 - Stack around the variable 'd' was corrupted." Не могу найти причину.
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
 
struct Phone
{
    char proizvodit[100];
    double diagonal;
    int chasi;
};
 
void Input(Phone *s, int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("Введите название телефона: ");
        scanf_s("%s", &s[i].proizvodit, 20);
        fflush(stdin);
 
        printf("Введите диагональ телефона: ");
        scanf_s("%lf", &s[i].diagonal);
 
        printf("Введите кол-во часов работы телефона без зарядки: ");
        scanf_s("%d", &s[i].chasi);
        printf("\n");
        fflush(stdin);
    }
}
 
void Nahojdenie(Phone *s, int n)
{
    for (int i = 0; i < n; i++)
    if (s[i].diagonal > 5)
        printf("Телефон с диагональю больше 5: %s\n", s[i].proizvodit);
}
 
int OutKol(Phone *s, int n)
{
    int k = 0;
 
    for (int i = 0; i < n; i++)
    if (s[i].chasi > 120)
        k++;
 
    printf("Кол-во телефонов работающих больше 120 часов: %d", k);
 
    return k;
}
 
void Nachod(Phone *s, char *test, int n)
{
    for (int i = 0; i < n; i++)
    {
        if (!(strcmp(test, s[i].proizvodit)))
        {
            printf("Диогональ телефона: %f\n", s[i].diagonal);
            printf("Кол-во часов работы: %d\n", s[i].chasi);
        }
    }
}
void main(void)
{
    setlocale(LC_ALL, "Russian");
 
    int const n = 2;
    char test[30];
    Phone d;
 
    printf("\t\t\t***Введите данные***\n\n");
 
    Input(&d, n);
    Nahojdenie(&d, n);
    printf("\n");
    OutKol(&d, n);
 
    printf("\n\nВведите производителя: ");
    gets_s(test, 20);
 
    Nachod(&d, test, n);
 
    _getch();
}

Решение задачи: «Задание со структурой - Stack around the variable 'd' was corrupted»

textual
Листинг программы
typedef struct Phone Phone;

Объяснение кода листинга программы

  1. В первой строке объявляется структура Phone
  2. В структуре Phone есть переменная d типа char
  3. Далее идет заполнение структуры Phone данными
  4. Но в какой-то момент, возможно, происходит выход за границы допустимого диапазона значений для переменной d
  5. В результате, стек (stack) вокруг переменной d становится поврежденным (corrupted)
  6. Возникает ошибка, которую мы видим в сообщении об ошибке

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы