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.
Список:
- Команда: scanf(
%c,&before); Описание: Считывание одного символа из стандартного ввода и сохранение его в переменнойbefore.