Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка чтения из файла, Ошибка чтения из файла 
:(
    Опции темы
BEL9ILLI
Дата 12.1.2012, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.11.2011

Репутация: нет
Всего: нет



Файл открывается, но читаться из него информация не хочется.
Исходник

Код

// конструктор [десериализвация (чтение из файла)]
c_array :: c_array (char *path) {
 
        FILE *f;
        
        // Открытие файла
        f = fopen (path, "r");
        //f = fopen (path, "rb");
 
        // Чтение количества измерений
        fscanf_s(f, "%d ", this->dimentions);
        //fread (&this->dimentions, sizeof(int), 1, f);
 
        this->size = new int[dimentions];
        //this->size = (int*) malloc (sizeof(int) * dimentions);
 
        this->coords = new int[dimentions];
        //this->coords = (int*) malloc (sizeof(int) * dimentions);
 
        // Чтение массива длин по каждому измерению
        for(int i = 0; i < this->dimentions; i++)
                fscanf_s(f, "%d ", this->size[i]);
        //fread (this->size, sizeof(int), this->dimentions, f);
        
        // Расчет длины
        this->length = 1;
        for (int i = 0; i < this->dimentions; i++)
                this->length *= this->size[i] ;
 
        this->data = new int[this->length];
        //this->data = (int*) malloc (sizeof(int) * this->length);
 
        for(int i = 0; i < this->length; i++)
                fscanf_s(f, "%d ", this->data[i]);
        //fread (this->data, sizeof(int), this->length, f);
 
        fclose (f)



З.Ы. нужная функция находится в файле array.cpp. Для того чтобы воспроизвести ошику в меню программы нажать 1 - ввести любое число(например 5). Затем нажать 8, после 9.

Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 13.1.2012, 10:15
PM MAIL   Вверх
boostcoder
Дата 13.1.2012, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(BEL9ILLI @  12.1.2012,  23:57 Найти цитируемый пост)
Исходник

выложи свой исходник на liveworkspace.org
никто не станет лазать по файлообменникам.

Добавлено через 1 минуту и 16 секунд
Цитата(BEL9ILLI @  12.1.2012,  23:57 Найти цитируемый пост)
нужная функция находится в файле array.cpp

так у тебя еще и код в нескольких файлах? тогда объясняй на пальцах проблему.
PM WWW   Вверх
BEL9ILLI
Дата 13.1.2012, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.11.2011

Репутация: нет
Всего: нет



Цитата(boostcoder @ 13.1.2012,  00:16)

Добавлено @ 00:18
Цитата(BEL9ILLI @  12.1.2012,  23:57 Найти цитируемый пост)
нужная функция находится в файле array.cpp

так у тебя еще и код в нескольких файлах? тогда объясняй на пальцах проблему.


Проблема такая. Есть прога, она ищет оптимальные пути по алгоритму Флойда-уоршалла и субоптимальные пути по алгоритму Йена. В проге реализовано, ввод данных вручную, случайная генерация начальных данных. Потребовалось реализовать сохранение данных в файл и чтение из него. Сохранение данных в файл проходит отлично, а загрузка данных из файла фейлится. Возвращает пустой указатель на поток.

Чтение из файла происходит в данной процедуре(описанной ниже). В чем проблема не знаю.

Код
c_array :: c_array (char *path) {

    FILE *f;
    
    // Открытие файла
    f = fopen (path, "r");
    // Чтение количества измерений
    fscanf_s(f, "%d ", this->dimentions);
    this->size = new int[dimentions];
    this->coords = new int[dimentions];
    // Чтение массива длин по каждому измерению
    for(int i = 0; i < this->dimentions; i++)
        fscanf_s(f, "%d ", this->size[i]);
    // Расчет длины
    this->length = 1;
    for (int i = 0; i < this->dimentions; i++)
        this->length *= this->size[i] ;
    this->data = new int[this->length];
    for(int i = 0; i < this->length; i++)
        fscanf_s(f, "%d ", this->data[i]);
        fclose (f);
}


Исходник программы в аттаче.

Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 13.1.2012, 10:16

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  123.rar 4,20 Kb
PM MAIL   Вверх
boostcoder
Дата 13.1.2012, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



покажи функцию сохраняющую данные.
PM WWW   Вверх
volatile
Дата 13.1.2012, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Да в принципе и так понятно...
Цитата(BEL9ILLI @  13.1.2012,  01:00 Найти цитируемый пост)
  fscanf_s(f, "%d ", this->dimentions);
    this->size = new int[dimentions];

Хоть вы и не привели декларейшн this->dimentions, но по ходу дальнейшего изложения, видно что это вовсе не указатель.
следовательно нужно писать так
fscanf_s(f, "%d ", & dimentions);

Ну и все остальные величины так-же.

Кароче, ртфм. smile 
fscanf_s
fscanf

Добавлено через 2 минуты и 27 секунд
еще совет. не нужно вам пользоваться вообще fscanf
юзайте потоки. они специально, для таких как вы написаны.
PM MAIL   Вверх
BEL9ILLI
Дата 13.1.2012, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 22.11.2011

Репутация: нет
Всего: нет



Спасибо. Помогло. Закрывайте тему.
PM MAIL   Вверх
bsa
Дата 13.1.2012, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
BEL9ILLI, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.