Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Altair5
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 11
#1

Stack around the variable was corrupted

19.02.2012, 14:06. Просмотров 889. Ответов 2
Метки нет (Все метки)

Здравствуйте,
при решении задания по созданию класса возникла ошибка Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted:
Суть программы такова, создаем массив элементов класса Животные (с полями номер, наименование, класс животного и вес). Необходимо предусмотреть цикл вывода на экран значений экземпляра класса,
экземпляры идентифицируются по полю "номер записи". Выход из цикла осуществить посредством ввода символа 'q'.
При отладке все работает нормально, но при вводе q выводит названную выше ошибку.
Для проверки я ввожу:
1)naimen - vk; ves-20; klass - ml;
2)naimen - be;ves-45; klass-ml;
Помогите пожалуйста.
Демонстрационная программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "Givotnie.h";
#include "stdio.h";
 
void main ()
{int n,i;
char a;
 CGivotnie Anim[2];
n=0;
for(i=0;i<2;i++)
{Anim[i].InitClass(n++);
}
while(1)                     /* Цикл вывода на экран значений полей экземпляра класса*/
{printf("Vivesti elementi? y/q \n");
  scanf("%s",&a);
if (a=='y')
{ 
    a=' ';
  printf("Vvedite nomer\n");     
  scanf("%d",&n);
  getchar();
  Anim[n].PrintClass(n);
}
if (a=='q') {break;}
}
}
Файл заголовка Givotnie.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef Givotnie
#define Givotnie
#endif
#include "stdio.h";
class CGivotnie
{  int nomer;
   char kl[3];
   char naimen[3];
   double ves;
 
public:
void PrintClass (int n);
void InitClass(int n);
void vvod_naim ();
void vivod_naim ();
void vvod_ves ();
void vivod_ves ();
void vvod_kl ();
void vivod_kl ();
};
Файл реализации методов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "Givotnie.h";
void CGivotnie :: InitClass (int n)
{nomer = n;
 vvod_naim();
 vvod_ves();
 vvod_kl();
}
void CGivotnie::PrintClass (int n)
{ printf("Nomer = %d",nomer);
  vivod_ves();
  vivod_kl();
  vivod_naim();}
void CGivotnie::vvod_ves ()
{printf("Vvedite ves \n");
  scanf("%lf",&ves); 
}
void CGivotnie::vvod_naim ()
{printf("Vvedite naimenovanie\n");
 scanf("%3s",&naimen);
     getchar();
}
void CGivotnie::vvod_kl ()
{printf("Vvedite klass\n");
 scanf("%3s",&kl);}
void CGivotnie::vivod_ves()
{printf("ves elementa=%3.2lf  ",ves);}
void CGivotnie::vivod_naim()
{printf("naimenovanie elementa = %3s\n",naimen);}
void CGivotnie::vivod_kl ()
{printf("klass elementa=%3s   ",kl);}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 14:06
Ответы с готовыми решениями:

Stack around the variable was corrupted
Здравствуйте! Есть код и ошибка, которую не могу найти в коде 2 суток. Может...

Stack around the variable 's' was corrupted
Помогите разобраться! Не пойму почему иногда при использовании в программе...

Stack around the variable 'b' was corrupted
Помогите разобраться почему вот эта программа: #include &lt;stdio.h&gt; int...

Stack around the variable was corrupted
Здравствуйте! Имею следующий код: #include &lt;iostream&gt; #include &lt;ctime&gt; using...

stack around the variable was corrupted
Программа заканчивает работу а потом выбивает: stack around the variable 'koef'...

2
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
19.02.2012, 14:31 #2
line 15
C++
1
scanf("%s",&a);
Переменная а имеет тип char. С клавиатуры считывается строка и портится стек из-за этого.
Вот правильно:
C++
1
scanf("%с",&a);
А еще лучше использовать стримы:
C++
1
cin >> a;
1
Altair5
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 11
19.02.2012, 14:40  [ТС] #3
Спасибо, теперь все работает)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2012, 14:40

Stack around the variable 'stat_c1' was corrupted
Добрый вечер форумчане. Написал програмку, все отлично, все работает. Но при...

Stack around the variable 'arr' was corrupted
Не пойму в чем причина... Stack around the variable 'arr' was corrupted. В чем...

Stack around the variable 'cif' was corrupted
#include &lt;iostream&gt; using namespace std; void main (){ char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru