Форум программистов, компьютерный форум CyberForum.ru

Stack around the variable was corrupted - C++

Восстановить пароль Регистрация
 
Altair5
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 11
19.02.2012, 14:06     Stack around the variable was corrupted #1
Здравствуйте,
при решении задания по созданию класса возникла ошибка 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);}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 14:06     Stack around the variable was corrupted
Посмотрите здесь:

C++ Stack around the variable 'b' was corrupted
stack around the variable was corrupted C++
C++ Бинарные файлы и Stack around the variable was corrupted
Stack around the variable 's' was corrupted C++
C++ Stack around the variable 'cif' was corrupted
C++ stack around the variable was corrupted масив через указатель
C++ Stack around the variable was corrupted
Stack around the variable 'stat_c1' was corrupted C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.02.2012, 14:31     Stack around the variable was corrupted #2
line 15
C++
1
scanf("%s",&a);
Переменная а имеет тип char. С клавиатуры считывается строка и портится стек из-за этого.
Вот правильно:
C++
1
scanf("%с",&a);
А еще лучше использовать стримы:
C++
1
cin >> a;
Altair5
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 11
19.02.2012, 14:40  [ТС]     Stack around the variable was corrupted #3
Спасибо, теперь все работает)
Yandex
Объявления
19.02.2012, 14:40     Stack around the variable was corrupted
Ответ Создать тему
Опции темы

Текущее время: 14:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru