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

странное поведение ifstream::open() - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Марицы и действия над ними http://www.cyberforum.ru/cpp-beginners/thread423276.html
Помогите пожалуйста, я в С++ полный чайник, а очень надо решить задачку. Задачка такого типа: Определить сумму четных элементов двухмерного массива натуральных чисел размером n на m, расположенных под главной диагональю. Привести подробное описание листинга программы. нужен сам код и алгоритм. Алгоритм худо-бедно получился, а вот с кодом никак сообразить не могу. Буду очень благодарен.
C++ vs 2005 не выполняет программу Здравствуйте, недавно начал изучать с++ в общем программу выполняет (на половину) дает вписать высоту, длину и ширину и потом закрывается :( код: // Ex2_05.cpp // Вычисление количесва рулонов обоев, необходимых для того, // чтобы обклеить комнату #include <iostream> using std::cout; http://www.cyberforum.ru/cpp-beginners/thread423271.html
C++ Еще немного по теории
Автоматы в программировании. Виртуальная ф-ция Что такое template, pattern? Разница Запуск исключений? до сих пор не пойму разнице между THREAD & STREAM-? Архитектура, управляемая событиями Оконные классы WINAPI. Цикл обработки сообщений Cинхронные и асинхронные сообщения Посылка сообщений из приложения
Найти в строке самое короткое слово-палиндром, состоящее только из латинских букв C++
помогите пожалуйста ничего не получается
C++ Посчитать количество квартир на заданной улице http://www.cyberforum.ru/cpp-beginners/thread423224.html
Привет всем, признаюсь честно не*рена непонимаю в массивах. а через 2 дня Экзамен, и надо успеть здать лабороторку. поможете? задание заключается вот в чём. написать консольную программу на языке C++ с использованием структур. Программа должна позволять пользователю добавлять данные в массив структур, просматривать этот массив, а также выполнять дополнительную операцию в соответствии с...
C++ Поиск элемента в списке Добавьте в класс списков метод int Search(T x) для поиска зна- чения x в списке. Метод должен возвращать номер узла со значением x или -1, если x не содержится в списке. прошу,помогите,пожалуйста. подробнее

Показать сообщение отдельно
vital792
1987 / 1259 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
06.01.2012, 10:46     странное поведение ifstream::open()
Добрый день уважаемые форумчане! Подскажите, если не сложно, в чем проблема/ошибка? Есть две разные реализации одного метода:
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
/*
bool pelengSetting::getDataFromFile(string path)
{
    string tempPath;
    char str[5];
    ifstream file;
 
    lengthData = getMinFileLength(path) / sizeof(short);
    if(!lengthData) return false;
    music->lengthSignalData = lengthData;
    for(unsigned i=0; i<signalCount; i++)
    {
        signalData[i] = new short [lengthData + 1];
        _snprintf(str, 5, "%d", i+1); // sprintf(str, "%d", i+1);
        tempPath = path + "test" + str + ".dat";
        file.open(tempPath.c_str());
        if(!file.good()) // if(file.fail())
            return fail();
//      else log << "\nOpen File: " << tempPath.c_str() << '\n';
        file.read((char*)signalData[i], lengthData*sizeof(short));
        file.close();
    }
    return true;
}
*/
 
bool pelengSetting::getDataFromFile(string path)
{
    string tempPath;
    char str[5];
    FILE *file;
 
    lengthData = getMinFileLength(path) / sizeof(short);
    if(!lengthData) return false;
    music->lengthSignalData = lengthData;
    for(unsigned i=0; i<signalCount; i++)
    {
        signalData[i] = new short [lengthData + 1];
        _snprintf(str, 5, "%d", i+1); // sprintf(str, "%d", i+1);
        tempPath = path + "test" + str + ".dat";
        file = fopen(tempPath.c_str(), "rb");
        if( !file )
            return fail();
//      else log << "\nOpen File: " << tempPath.c_str() << '\n';
        fread(signalData[i], sizeof(short), lengthData, file);
        fclose(file);
    }
    return true;
}
Вроде все почти одинаково, но первый (в комментариях) не работает. Причем все нормально срабатывает на первом шаге цикла, а на втором, то есть при открытии файла test2.dat получаю fail. (err,hr в watch показывает S_OK). Использую visual studio 2008. Кстати, в linux, на gcc все отлично компилируется и работает. Проблема именно в windows, и именно в этой связке { file.open() file.read() file.close() }. На втором шаге она не работает. На minGW (windows) та же проблема. С чем может быть связано?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru