Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Altair5
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 11
#1

Stack around the variable was corrupted - C++

19.02.2012, 14:06. Просмотров 854. Ответов 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 (C++):

stack around the variable was corrupted - C++
Программа заканчивает работу а потом выбивает: stack around the variable 'koef' was corrupted В чем проблема и как ее исправить? ...

Stack around the variable 'b' was corrupted - C++
Помогите разобраться почему вот эта программа: #include &lt;stdio.h&gt; int main() { short b,k=0; float a,s=0; FILE* inf =...

Stack around the variable was corrupted - C++
Здравствуйте! Есть код и ошибка, которую не могу найти в коде 2 суток. Может кто-то заметит. Слышал то, что за пределы массива выхожу, но в...

Stack around the variable was corrupted - C++
Здравствуйте! Имею следующий код: #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; void main() { const int arr =...

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

Stack around the variable 'cif' was corrupted - C++
#include &lt;iostream&gt; using namespace std; void main (){ char cif=&quot;1234567891111199121&quot;; int i=0, j=0, dlin=0, razn=0,...

2
DU
1484 / 1130 / 45
Регистрация: 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 - C++
Добрый вечер форумчане. Написал програмку, все отлично, все работает. Но при завершении программы, т.е. когда выполняеться строчка return...

Бинарные файлы и Stack around the variable was corrupted - C++
Добрый день. Делаю программу (лабу), которая работает с бинарными файлами: Сначала заполняет бинарный файл случайным количеством...

Ошибка: Stack around the variable 'Material' was corrupted - C++
При компиляции кода на C++, выводит ----Run-Time Check Failure #2 - Stack around the variable 'Material' was corrupted.---- И...

stack around the variable was corrupted масив через указатель - C++
Такая проблема - создаю масив целых чисел через функцию с использованием указателей - выскакивает данная ошибка, хотя код работает верно,...


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

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

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