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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
agros
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 5
#1

debug error - C++

24.08.2011, 15:11. Просмотров 1390. Ответов 3
Метки нет (Все метки)

Здравствуйте, уважаемые программисты.
Следующая проблема:
после добавления блока if(round == 'g')
и после запуска программы выдает ошибку:
Run-time check failure #2 - stack around the variable 'team1' was corrupted
В дебагере пробовал смотреть, все переменные присваиваются корректно, запись в файл производится, потом ошибка выскакивает




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
void add_match(vector<Match> & match, vector<Team> & team)
{
    int id_team1, id_team2, day, month, year, hour, minute;
    Date match_date;
    Match temp_match;
    int id_match = find_max_id(match)+1;
    cout << "id_match: " << id_match << endl;
 
    char round;
    cout << "group match or playoff match (g/p): ";
    cin >> round;
    if(round == 'g')
    {
        cout << "Input id_team1: ";
        cin >> id_team1;
        cout << "Input id_team2: ";
        cin >> id_team2;
    }
    
    if(round == 'p')
    {
        char team1[2], team2[2];
        //два массива под команду, например "a1" - команда, занявшая первое место в группе а
        cout << "Input team1(for example, a1): ";
        cin >> team1;
        cout << "Input team2(for example, b2): ";
        cin >> team2;
        id_team1 = convert(team1[0], team1[1]);
        id_team2 = convert(team2[0], team2[1]);
    }
 
    cout << "input date: ";
    cin >> day >> month >> year >> hour >> minute;
    match_date.set(year, month, day, hour, minute);
    temp_match.set(id_match, id_team1, id_team2, match_date);
    match.push_back(temp_match);
    
    write_mas_to_file(match, "matchs.txt");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2011, 15:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос debug error (C++):

Debug error - C++
После запуска при вводе любого числа выдает debug error с предложение прервать, повторить или пропустить. Если нажимаю пропустить выдает...

С++ Debug Error!( - C++
Здравствуйте. Первый раз сталкиваюсь с подобными проблемами. Код работает верно, так как я и хотел. Проблема в том , что после...

Debug error в коде - C++
Код объемный, но простой и я основное комментировал. Вылетает после того, как вводишь логин и пароль. Скрин после кода. /* gamers.h */ ...

Debug Error! R6010 - abort() has been called - C++
Помогите исправить ошибку #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main(int argc, char * argv) { ...

Ошибка Debug error. Run-time check failure #2. C++ - C++
Подскажите, что не так. #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cstdlib&gt; ...

BSCMAKE: error BK1506 : cannot open file '.\Debug\RESDlg.sbr': No such file or directory - C++
--------------------Configuration: RES - Win32 Debug-------------------- Compiling... RESDlg.cpp c:\program files\microsoft visual...

3
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 15:16 #2
Цитата Сообщение от agros Посмотреть сообщение
char team1[2], team2[2]; //два массива под команду, например "a1" - команда, занявшая первое место в группе а cout << "Input team1(for example, a1): "; cin >> team1; cout << "Input team2(for example, b2): "; cin >> team2;
Можно вводить не более одного символа.
1
agros
0 / 0 / 0
Регистрация: 23.05.2011
Сообщений: 5
24.08.2011, 15:25  [ТС] #3
А-а-а, спасибо!
тут видимо строки получаются с конечным символом \0,
исправил размер с 2 на 3: заработало
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.08.2011, 15:27 #4
Цитата Сообщение от agros Посмотреть сообщение
тут видимо строки получаются с конечным символом \0
Именно!
Но лучше считывай в std::string или ограничь количество символов вводимых. В общем защитись получше.
0
24.08.2011, 15:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 15:27
Привет! Вот еще темы с ответами:

fatal error LNK1168: не удается открыть F:\Interp\Debug\Interp.exe для записи - C++
После того,как в 38 строке к k приписал &quot;=0&quot;начало выбивать ошибку &quot;fatal error LNK1168: не удается открыть F:\Interp\Debug\Interp.exe для...

Исправить ошибку в WxDev-C++: Error with debugging process: GDB Error: error, No source file named main.cpp - C++
Здравствуйте товарищи! Новенький я в си, установил wxDev-C++, скомпилировал, запускаешь - работает, а чтоб пошагово отладка - не...

Error LNK1120, error LNK2019, error LNK2028, queue - C++
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за которой происходит ошибка ...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'" - C++
#include&lt;iostream&gt; using namespace std; int main(){ int x, a = 0, b = 10; (cin &gt;&gt; x).get(); while (x){ int c = x % 10; ...


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

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

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