Run-Time Check Failure #2 - Stack around the variable 'after' was corrupted при обращении к символу - C (СИ)

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

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

Здравствуйте!!!Программа работает вроде бы правильно,но после отработки программы Я сталкиваюсь с такой вот проблемой, погуглил и нашел там что это ошибка связана с тем что где то есть выход за границы, но не могу разобраться и где и почему это происходит . Помогите кто сможет! Всем заранее спасибо вот код :
#include <stdio.h>
 
#define METER 'M'
#define INCH 'I'
#define FT 'F'
#define MILE 'L'
#define MI 38.4
#define MF 3.2
#define ML 0.000621
#define IF 0.083
#define IL 0.00001578
#define FL 0.000189
int main(){
    int value;
    char before;
    char after;
    printf("Enter the value to convert\n");
    scanf("%d",&value);
    printf("Enter magnitude before follows:meter-'M',Inch-'I',ft-'F',Mile-'L' \n"); 
    scanf("%s",&before);
    printf("Enter magnitude after follows:meter-'M',Inch-'I',ft-'F',Mile-'L' \n");
    scanf("%s",&after);
    printf("%s",before);
    switch(before){
        case METER:
            switch(after){
                    case INCH:
                            printf("%.2f",value*MI);
                            break;
                        case FT:
                            printf("%.2f",value*MF);
                            break;
                        case MILE:
                            printf("%.2f",value*ML);
                            break;
                    }
                    break;
        case INCH:  
            switch(after){
                        case METER:
                            printf("%.2f",value*(1/MI));
                            break;
                        case FT:
                            printf("%.2f",value*IF);
                            break;
                        case MILE:
                            printf("%.2f",value*IL);
                            break;
                    } 
            break;
        case FT: 
            switch(after){
                        case METER: 
                            printf("%.2f",value*(1/MF));
                            break;
                        case INCH: 
                            printf("%.2f",value*(1/IF));
                            break;
                        case MILE: 
                            printf("%.2f",value*FL);
                            break;
                    }
                    break;
        case MILE:
            switch(after){
                        case METER: 
                            printf("%.2f",value*(1/ML));
                            break;
                        case FT: 
                            printf("%.2f",value*(1/FL));
                            break;
                        case INCH: 
                            printf("%.2f",value*(1/IL));
                            break;
                    }
                  break;
        default: printf("Don't set start value");
    }
    return 0;
}

Решение задачи: «Run-Time Check Failure #2 - Stack around the variable 'after' was corrupted при обращении к символу»

textual
Листинг программы
scanf("%c",&before);

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

Код начинается с команды, которая считывает один символ из стандартного ввода и сохраняет его в переменной типа char с именем before. Список:

  1. Команда: scanf(%c,&before); Описание: Считывание одного символа из стандартного ввода и сохранение его в переменной before.

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


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

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

11   голосов , оценка 3.818 из 5