Stack around the variable 'i' was corrupted - C (СИ)
Формулировка задачи:
Создать массив указателей на функцию. Ввести цифру, которая обозначает функцию, которую необходимо выполнить: 0 – найти последнее положительное,
1 – умножить числа,
2 – посчитать среднее значение.
Программа выполняется, но в конце выскакивает ошибка - Run-Time Check Failure #2 - Stack around the variable 'i' was corrupted.
#include <stdio.h> #include <conio.h> #include <stdlib.h> void main (void) { int ladd (int, int); int mul (int, int); int avg (int, int); int (*y[10]) (int, int) = {ladd, mul, avg}; char *str[ ] = {"ladd", "mul", "avg"}; int m, n; char i = '0'; while (i) { system("pause"); system("cls"); puts ("Input the operation: \n"); puts ("0 - to find last positive \n"); puts ("1 - to find result of multiplication \n"); puts ("2 - to find average value \n"); puts ("9 - exit \n"); scanf("%d", &i); if ( i == 9 ) return; if ( i < 0 || i > 2 ) { puts ("Incorrect operation code \n"); system("cls"); continue; } puts ("Input the operands (m, n): \n"); scanf("%d%d", &m, &n); printf ("%s= %d \n", str[i],(*y[i]) (m, n) ); } } int avg (int m, int n) {return (( m + n ) / 2); } int ladd (int m, int n) {return ( m > n ) ? m: n; } int mul (int m, int n) {return m * n; }
Решение задачи: «Stack around the variable 'i' was corrupted»
textual
Листинг программы
#include <stdio.h> int main(void) { int n; printf("Number: "); if ( ! scanf("%d", &n) ) printf("Incorrect input!\n"); else printf("All right, value is %d\n", n); return 0; }
Объяснение кода листинга программы
- Включаем файл stdio.h для работы с функциями ввода-вывода
- Объявляем переменную типа int с именем n
- Выводим на экран приглашение для ввода числа
- Проверяем успешность ввода числа с помощью функции scanf, если ввод некорректен выводим сообщение об ошибке
- Если ввод корректен, выводим сообщение о правильном вводе и значение переменной n
- Завершаем программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д