Задание со структурой - 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) - Возникает ошибка, которую мы видим в сообщении об ошибке
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д