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;
}

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

  1. Включаем файл stdio.h для работы с функциями ввода-вывода
  2. Объявляем переменную типа int с именем n
  3. Выводим на экран приглашение для ввода числа
  4. Проверяем успешность ввода числа с помощью функции scanf, если ввод некорректен выводим сообщение об ошибке
  5. Если ввод корректен, выводим сообщение о правильном вводе и значение переменной n
  6. Завершаем программу

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


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

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

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