Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
52 / 52 / 18
Регистрация: 20.03.2015
Сообщений: 278
1

Run-Time Check Failure #2 - Stack around the variable 'dt' was corrupted

16.02.2016, 18:58. Показов 1566. Ответов 3
Метки нет (Все метки)

Я понимаю что ошибка говорит о том что где-то вышел за диапазон массива, я перепроверил все циклы, вроде все гладко с индексами. данная ошибка возникает при выходе из метода, подскажите что не так. вот код.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
void CreateReys()
{
    cout << "--== Функция создания рейса ==--\n";
    node *item = new node;
    cout << "Номер рейса: ";
    cin >> item->nomerReysa;
    cout << "Пункт назначения: ";
    cin >> item->punktNaznach;
    cout << "Дата и время вылета в формате ГГГГ.ММ.ДД.ЧЧ:ММ:СС ";
    char dt[19];
    cin >> dt;
#pragma region проверка на соответствие даты стандарту ввода
    if (
        //год
        dt[0] >= '0' && dt[0] <= '9'&&
        dt[1] >= '0' && dt[1] <= '9'&&
        dt[2] >= '0' && dt[2] <= '9'&&
        dt[3] >= '0' && dt[3] <= '9' &&
        //месяц
        ((dt[5] == '0' && dt[6] >= '0'&& dt[6] <= '9') ||
            (dt[5] == '1' && dt[6] >= '0'&& dt[6] <= '2')) &&
        //дни
        (((dt[8] == '0' || dt[8] == '1') && dt[9] >= '0'&& dt[9] <= '9') ||
            (dt[8] == '3' && dt[9] >= '0'&& dt[9] <= '1')) &&
        //часы
        (((dt[11] >= '0' && dt[11] <= '1') && dt[12] >= '0'&& dt[12] <= '9') ||
            (dt[11] == '2' && dt[12] >= '0'&& dt[12] <= '3')) &&
        //минуты
        dt[14] >= '0' && dt[14] <= '5' &&
        dt[15] >= '0'&& dt[15] <= '9' &&
        //секунды
        dt[17] >= '0' && dt[17] <= '5' &&
        dt[18] >= '0'&& dt[18] <= '9'
        )
    {
        //записываем год
        __int16 y = 0;
        y = 1000 * (dt[0] - '0');
        y += 100 * (dt[1] - '0');
        y += 10 * (dt[2] - '0');
        y += 1 * (dt[3] - '0');
        item->year = y;
        //записываем месяц
        __int8 x = 0;
        x = 10 * (dt[5] - '0');
        x += 1 * (dt[6] - '0');
        item->month = x;
        //день
        x = 10 * (dt[8] - '0');
        x += 1 * (dt[9] - '0');
        item->day = x;
        //час
        x = 10 * (dt[11] - '0');
        x += 1 * (dt[12] - '0');
        item->hour = x;
        //минуты
        x = 10 * (dt[14] - '0');
        x += 1 * (dt[15] - '0');
        item->minute = x;
        //секунды
        x = 10 * (dt[17] - '0');
        x += 1 * (dt[18] - '0');
        item->second = x;
    }
    else
    {
        cout << "Неверный формат даты, рейс не создан.\n";
        return;
    }
    #pragma endregion
    cout << "Введите цену рейса в формате использую точку в качестве разделителя: ";
    for (size_t i = 0; i < 19; i++)dt[i] = 0;
    cin >> dt;
    float c = atof(dt);
    item->cena = c;
    cout << "Укажите количество посадочных мест: ";
    for (size_t i = 0; i < 19; i++)dt[i] = 0;
    cin >> dt;
    short m = atoi(dt);
    item->mesta = m;
    list.Add(item);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2016, 18:58
Ответы с готовыми решениями:

Run-Time Check Failure #2 - Stack around the variable 'A' was corrupted
Определить класс вектор (одномерный числовой массив). В класс включить конструктор для определения...

Run time check failure #2 stack around the variable was corrupted
Помогите пожалуйста найти ошибку, только начала писать код и уже не могу найти ошибку void main()...

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted
Добрый день подскажите что это означает и как исправить данное сообщение Run-Time Check Failure #2...

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted
Всем привет, начал недавно писать на с++, делаю программу по заполнению и сортировке элементов...

3
nd2
3419 / 2799 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
16.02.2016, 19:04 2
Лучший ответ Сообщение было отмечено Prizrak86 как решение

Решение

Цитата Сообщение от Prizrak86 Посмотреть сообщение
формате ГГГГ.ММ.ДД.ЧЧ:ММ:СС
Под такую строку нужен массив под 20 символов, чтобы '\0' поместился.
1
52 / 52 / 18
Регистрация: 20.03.2015
Сообщений: 278
16.02.2016, 19:53  [ТС] 3
nd2, спасибо за столь быстрый ответ, действительно ошибка устранена, подскажите, почему в массиве должно содержаться на ячейку больше чем ожидается для ввода?
0
nd2
3419 / 2799 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
16.02.2016, 19:59 4
Цитата Сообщение от Prizrak86 Посмотреть сообщение
подскажите, почему в массиве должно содержаться на ячейку больше чем ожидается для ввода?
...
Цитата Сообщение от nd2 Посмотреть сообщение
чтобы '\0' поместился.
Си-строка - массив символов с '\0' в конце (признак конца строки). Функции чтения Си-строк сами добавляют '\0'.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2016, 19:59

Run-Time Check Failure #2 - Stack around the variable '.' was corrupted
Сделал &quot;меню&quot; для работы со своим стеком. При вводе &quot;0&quot; выходит ошибка &quot;Run-Time Check Failure #2 -...

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
Здравствуйте. Пишу две функции: ввод и вывод целочисленного массива, в конце программы вылетает...

Run-Time Check Failure #2 - Stack around the variable 'C' was corrupted
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { const int n=10;...

Run-Time Check Failure #2 - Stack around the variable 'c' was corrupted
Добрый день, уважаемые представители форума. При решении простейшей задачи возникла такая ошибка:...

Run-Time Check Failure #2 - Stack around the variable 'n' was corrupted
При вводе значение более трёх символов (это значение конечно можно регулировать) появляется...

Run-Time Check Failure #2 - Stack around the variable 'gunpowder' was corrupted
После успешного завершения выдаёт &quot;Run-Time Check Failure #2 - Stack around the variable...


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

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

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