Форум программистов, компьютерный форум 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
1989 / 1261 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
06.01.2012, 11:54  [ТС]     странное поведение ifstream::open()
отвечу в том же порядке.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
getMinFileLength(path)
- зачем эта функция если string сам по себе оснащён методом length() который возращает длинну строки
Функция возвращает минимальный размер файла, чтобы знать сколько памяти выделять для чтения.
Имеется некоторый набор файлов, они могут иметь разный размер, но при чтении я их как бы уравниваю по размеры самого короткого остальное отбрасываю.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- сочетание Си и плюсов - плохой тон в программировании, либо Си либо С++
именно поэтому я и хотел бы чтобы заработал первый вариант реализации метода. А второй я привел, чтобы отсечь варианты, типа неправильно задан путь, вообще отсутствуют файлы и проч. не связанные с данным методом возможные проблемы.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- чё за изощрения - sprintf спокойно отработает sprintf(str, "%d", i+1); правда ваша char s должна иметь 6 символов (не забівайте о ноль-терминаторе строки)
в общем конечно я согласен. Так и было вначале, это Cаттер меня смутил своим " никогда не используйте sprintf " )

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
правда я бы выделял ну скажем 8 символов char s[16]; мы работаем в 21 веке и экономить 2 чара в данном алгоритме вообще бессмысленно, это раньше за каждый байт билиськода бились. Кстати INT_MAX равен +2147483647 - єто раз два...10 разрядов + ноль терминатор и думаю разряд на знак как раз 12 символов в s надо
вообще, цифра добавляемая к имени файла у меня будет числом файлов, а я уверен, что за 100 никогда не перевалит, так что 5 это еще с запасом. Файлы представляют из себя смоделированные бинарные данные "как бы" снятые с каналов антены
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
В функциях с коментами вижу что изначально на плюсах писали, зачем отказались???
написал выше.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
file.read((char*)signalData[i], lengthData*sizeof(short));
думаю неверное чтение
в дампе памяти все верно. К тому же повторюсь, в линуксе все работает на ура. Поэтому я был очень удивлен, что в винде не заработало.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
return /*fail()*/false;//М.б false хотели???
fail() у меня метод. Возвращает false и сбрасывает поле "статус" в ошибку.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
file.read((char*)signalData, lengthData);
signalData это у меня должна получиться матрица signalData [signalCount][lengthData]

Добавлено через 17 минут
Заранее предвижу, что экстрасенсы в отпуске))
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
unsigned pelengSetting::getMinFileLength(string path)
{
    unsigned length = -1;
    ifstream file;
    string tempPath;
    char str[10];
    for(unsigned i=0; i<signalCount; i++)
    {
        sprintf(str, "%d", i+1);
        tempPath = path + "test" + str + ".dat";
        file.open(tempPath.c_str());
        if(!file)
        {
//          log << "Error open file " << tempPath.c_str( )<< "\n";
            status = false;
            length = 0;
            break;
        }
        else
        {
            file.seekg(0, ios::end);
            if(file.tellg()<length) length = file.tellg();
            file.close();
        }
    }
    return length;
}
 
bool pelengSetting::fail()
{
    status = false;
    return false;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru