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

Укажите где ошибка (ошибка во время выполнения программы) - C++

Восстановить пароль Регистрация
 
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
23.08.2014, 13:04     Укажите где ошибка (ошибка во время выполнения программы) #1
Здравствуйте, помогите пожалуйста найти ошибки в коде которые возникаю при выполнении программы
Картинка с ошибкой внизу поста.
Код:
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
void Zipper::OutCompress(string binary)
{
    FILE *bin = fopen(binary.c_str(), "rb");
    char info_block_size[5];
    fread(info_block_size, 1, 5, bin);
    int _sz = atoi(info_block_size);
 
    char *info_block = new char[_sz];
    fread(info_block, 1, _sz, bin);
 
    vector<string> tokens;
    char *tok = strtok(info_block, "||");
    int toks = 0;
    while (tok)
    {
        if (strlen(tok) == 0) break;
        tokens.push_back(tok);
        tok = strtok(NULL, "||");
        toks++;
    }
    if (toks % 2 == 1) toks--;
    int files = toks / 2;
 
    char byte[1];
 
    for (int i = 0; i<files; i++)
    {
        const char* size = tokens[i * 2].c_str();
        const char* name = tokens[i * 2 + 1].c_str();
        char full_path[255];
        strcpy(full_path, this->path.c_str());
        strcat(full_path, name);
        int _sz = atoi(size);
        cout << "--  '" << name << "' извлечен в '" << this->path << "' ." << endl;
        FILE *curr = fopen(full_path, "wb");
        for (int r = 1; r <= _sz; r++)
        {
            if (fread(byte, 1, 1, bin) == 1) 
                fwrite(byte, 1, 1, curr);
        }
        fclose(curr);
 
        delete[] size;
        delete[] name;
    }
    fclose(bin);
 
}
с помощью дибагера я установил что ошибка вылетает на 39 строке, но почему ?
Полный код программы
Миниатюры
Укажите где ошибка (ошибка во время выполнения программы)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 13:04     Укажите где ошибка (ошибка во время выполнения программы)
Посмотрите здесь:

strtod - ошибка во время выполнения C++
C++ Ошибка при выполнения программы
C++ fputc не работает, укажите где в програмке ошибка
C++ Ошибка во время выполнения программы.
C++ Ошибка во время выполнения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
 Аватар для volvo
21687 / 14160 / 3939
Регистрация: 22.10.2011
Сообщений: 25,023
Записей в блоге: 2
23.08.2014, 13:09     Укажите где ошибка (ошибка во время выполнения программы) #2
И где проверка на успешность открытия файла? curr точно не NULL?
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
23.08.2014, 13:11  [ТС]     Укажите где ошибка (ошибка во время выполнения программы) #3
curr NULL (0x00000000)
но почему не создает файл ?
volvo
Супер-модератор
 Аватар для volvo
21687 / 14160 / 3939
Регистрация: 22.10.2011
Сообщений: 25,023
Записей в блоге: 2
23.08.2014, 13:15     Укажите где ошибка (ошибка во время выполнения программы) #4
Проверяй.
errno, например посмотри...
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
23.08.2014, 13:19  [ТС]     Укажите где ошибка (ошибка во время выполнения программы) #5
сделал проверку на файл, и прохожу этот цикл так как файла нету.
Но потом на 43 строке выдает ошибку:
Укажите где ошибка (ошибка во время выполнения программы)
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
23.08.2014, 13:35     Укажите где ошибка (ошибка во время выполнения программы) #6
Выведи на экран full_path, посмотри куда он указывает.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
23.08.2014, 13:48  [ТС]     Укажите где ошибка (ошибка во время выполнения программы) #7
Указывает на файл.
В моем случае это:
C:\unpack\1.txt
Добавлено через 7 минут
Присвоение вроде как верно прописано.
Но дебагер про curr пишет:
curr NULL (0x00000000)

Почему так ?
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
23.08.2014, 15:30     Укажите где ошибка (ошибка во время выполнения программы) #8
Папка unpack на диске C существует?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2014, 16:04     Укажите где ошибка (ошибка во время выполнения программы)
Еще ссылки по теме:

Ошибка после выполнения программы C++
C++ Ошибка во время выполнения программы
C++ Во время выполнения программы результат не выводится. Где ошибка?

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

Или воспользуйтесь поиском по форуму:
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
23.08.2014, 16:04  [ТС]     Укажите где ошибка (ошибка во время выполнения программы) #9
да, программа распаковывает свое содержимое в эту папку, но ошибка все равно есть
Yandex
Объявления
23.08.2014, 16:04     Укажите где ошибка (ошибка во время выполнения программы)
Ответ Создать тему
Опции темы

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