Форум программистов, компьютерный форум 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 не содержится в списке. прошу,помогите,пожалуйста. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
06.01.2012, 11:06     странное поведение ifstream::open()
Цитата Сообщение от vital792 Посмотреть сообщение
getMinFileLength(path)
- зачем эта функция если string сам по себе оснащён методом length() который возращает длинну строки lengthData = (short)path.length();

Цитата Сообщение от vital792 Посмотреть сообщение
FILE *file;
- сочетание Си и плюсов - плохой тон в программировании, либо Си либо С++

Цитата Сообщение от vital792 Посмотреть сообщение
_snprintf(str, 5, "%d", i+1);
- чё за изощрения - sprintf спокойно отработает sprintf(str, "%d", i+1); правда ваша char s должна иметь 6 символов (не забівайте о ноль-терминаторе строки)
C++
1
2
char s[6];
sprintf(str, "%d", i+1);
правда я бы выделял ну скажем 8 символов char s[16]; мы работаем в 21 веке и экономить 2 чара в данном алгоритме вообще бессмысленно, это раньше за каждый байт билиськода бились. Кстати INT_MAX равен +2147483647 - єто раз два...10 разрядов + ноль терминатор и думаю разряд на знак как раз 12 символов в s надо

В функциях с коментами вижу что изначально на плюсах писали, зачем отказались???
Цитата Сообщение от vital792 Посмотреть сообщение
file.open(tempPath.c_str());
* * * * * * * * if(!file.good())
Цитата Сообщение от vital792 Посмотреть сообщение
file.read((char*)signalData[i], lengthData*sizeof(short));
думаю неверное чтение

Вот мой взгляд на проблемму
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
bool getDataFromFile(string path)
{
    string tempPath;
    char str[12];
    ifstream file;
 
    lengthData = path.length();
    if(!lengthData) 
        return false;
    music->lengthSignalData = lengthData;
    for(unsigned i=0; i<signalCount; i++)
    {
        signalData[i] = new short [lengthData + 1];
        sprintf(str, "%d", i+1);
        tempPath = path + "test" + str + ".dat";
        file.open(tempPath.c_str());
        if(!file.good()) 
            return /*fail()*/false;//М.б false хотели???
        else 
        {
            log << "\nOpen File: " << tempPath.c_str() << '\n';
            file.read((char*)signalData, lengthData);
            file.close();
            signalData[lengthData] = '\0';//Не забываем обрезать строку
        }
        file.clear();        
    }
    return true;
}
Добавлено через 1 минуту
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
lengthData = path.length();
- здесь студия не требовала явного приведения к short поэтому опустил (short) перед path.length()
 
Текущее время: 05:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru