Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 02:02   #1
BEL9ILLI
 
Регистрация: 22.11.2011
Сообщений: 4
По умолчанию Ошибка при чтении из файла

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

Код:
// конструктор [десериализвация (чтение из файла)]
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.

Последний раз редактировалось ACE Valery; 13.01.2012 в 19:39.
BEL9ILLI вне форума Ответить с цитированием
Старый 13.01.2012, 08:38   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в fscanf нужно передать адрес переменной куда читать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2012, 09:42   #3
BEL9ILLI
 
Регистрация: 22.11.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в fscanf нужно передать адрес переменной куда читать.
а это разве не то?

fscanf_s(f, "%d ", this->data[i])
BEL9ILLI вне форума Ответить с цитированием
Старый 13.01.2012, 10:12   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Код:
fscanf_s(f, "%d ", &(this->data[i])   );
Не?
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка при чтении из файла _-Re@l-_ Общие вопросы .NET 2 21.11.2010 20:12
Ошибка при чтении из файла alex_alpha Общие вопросы C/C++ 5 08.08.2010 20:28
ошибка при чтении файла ongleb Общие вопросы C/C++ 17 30.07.2009 13:48
ошибка при чтении файла Alik-Soldier Общие вопросы C/C++ 1 31.05.2009 20:44
Ошибка при чтении БД из файла!! sting БД в Delphi 4 14.12.2008 22:23