Задание со структурой - 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;
Объяснение кода листинга программы
- В первой строке объявляется структура
Phone - В структуре
Phoneесть переменнаяdтипаchar - Далее идет заполнение структуры
Phoneданными - Но в какой-то момент, возможно, происходит выход за границы допустимого диапазона значений для переменной
d - В результате, стек (stack) вокруг переменной
dстановится поврежденным (corrupted) - Возникает ошибка, которую мы видим в сообщении об ошибке