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

Почему ifstream fail() - C++

Войти
Регистрация
Восстановить пароль
 
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
31.03.2014, 12:28     Почему ifstream fail() #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
void Program::loadInfo()
{
    char* path = Util::getPath();
    strncat(path, "\\Data.txt", 12);
    std::vector<LinkButtonInfo*> temp;
    //std::ifstream f;
 
    //f.open(path);
    //if (f.is_open() && !f.fail())
    //{
 
        /*while (f.good() && !f.fail())
        {
            std::string s;
            std::getline(f, s);
 
            char *cstr = new char[s.length() + 1];
            strcpy(cstr, s.c_str());
 
            LinkButtonInfo* info = parseString(cstr);
            temp.push_back(info);
        }
 
        f.close();*/
 
        /*for (int j = 0; j < temp.size(); j++)
        {
            for (int i = 0; i < universe->buttons.size(); i++)
            {
                if (temp.at(j)->tag == universe->buttons.at(i)->tag)
                {
                    universe->buttons.at(i)->setLink(temp.at(j)->link);
                    break;
                }
            }
        }*/
    //}
}
Если все раскоментить то программа отлично скомпилится в Visual Studio 2013, но при запуске exe из папки Debug Пишет:"Прекращение работы программы" и вылетает. Я определил что это начинается когда появляется строчка:
C++
1
std::ifstream f;
Вопрос: почему?

Добавлено через 11 минут
Попробовал с FILE:
C++
1
FILE* f= fopen(path, "r");
Тоже самое.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 12:28     Почему ifstream fail()
Посмотрите здесь:

Объект ifstream!!! C++
не работает класс в разных Source fail'ах C++
C++ Объект ifstream!!!
C++ fail sort za 0.5 sek 100000
C++ ifstream
ifstream ofstream C++
ifstream считывает 0 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.03.2014, 13:39     Почему ifstream fail() #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от lNORDl Посмотреть сообщение
Вопрос: почему?
Для начала, ошибка в попытке писать не пойми куда:
C++
1
2
char* path = Util::getPath(); // Вернул какой-то указатель ...
strncat(path, "\\Data.txt", 12); // ... но нет гарантии что туда можно писать.
Поэтому выделите сначала буфер для пути, а потом уже с ним работайте. Например так:
C++
1
2
3
char path[PATH_MAX];
strcpy( path, Util::getPath() );
strcat(path, "\\Data.txt");
Если проблема останется, есть смысл смотреть код дальше.
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
31.03.2014, 14:21  [ТС]     Почему ifstream fail() #3
Осталась! Я говорю, странно именно то, что IDE все компилится отлично, а exe вылетает с ошибкой...
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 14:25     Почему ifstream fail() #4
Цитата Сообщение от lNORDl Посмотреть сообщение
Я говорю, странно именно то, что IDE все компилится отлично
Ошибка, которую предположил Tulosba, это ошибка времени выполнения (возможны и другие, такого же плана), при таких ошибках компиляции проходит нормально.
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.03.2014, 14:27     Почему ifstream fail() #5
Цитата Сообщение от lNORDl Посмотреть сообщение
IDE все компилится отлично
Если код скомпилировался отлично это еще не значит, что код отличный
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2014, 14:28     Почему ifstream fail() #6
Выведите на консоль, что Util::getPath() возвращает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 14:33     Почему ifstream fail()
Еще ссылки по теме:

C++ Variadic templates fail
Fatility Fail. ini файлы и 0xc0000005 C++
Ifstream ошибка C++
не работает в ifstream C++
Различия ifstream::get() и ifstream::get(ch) C++

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

Или воспользуйтесь поиском по форуму:
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
31.03.2014, 14:33  [ТС]     Почему ifstream fail() #7
Все вроде заработало, просто этот getPath() используется в 2 местах я пофиксил только в 1 и забыл что этот метод дергает 2 метод.

Спасибо!
Yandex
Объявления
31.03.2014, 14:33     Почему ifstream fail()
Ответ Создать тему
Опции темы

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