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

определения конца файла - C++

Восстановить пароль Регистрация
 
Ang_07
 Аватар для Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
28.04.2011, 20:10     определения конца файла #1
Как определить конец файла если я открываю файл fopen и считываю данные через freed ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int reedFileT(Dek *&ldek,Dek *&rdek)
{
    if(ldek!=0)return 0;
    FILE *f=fopen("myfile.txt","rt");
    Dek *pdek;
    Dek *ndek=new Dek;
    while()//вотсуда надо вставить чтонибуть чтоб при окончании файла оно вышло из цикла.. тоесть пока не конец файла
    {
        if(ldek==0){ldek=ndek; ndek->left=0;}
        fread(&ndek->info,sizeof(Info),1,f);
        pdek=ndek;
        ndek=new Dek;
        ndek->left=pdek;
        pdek->right=ndek;
    }
    fclose(f);
    rdek=ndek;
    rdek->right=0;
    return 1;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,217
Завершенные тесты: 1
28.04.2011, 21:19     определения конца файла #2
Используйте, например,
feof()
Syntax

#include <stdio.h>
int feof(FILE *stream);

Description

Detects end-of-file on a stream.
feof is a macro that tests the given stream for an end-of-file indicator. Once the indicator is set read operations on the file return the indicator until rewind is called or the file is closed. The end-of-file indicator is reset with each input operation.

Return Value

feof returns nonzero if an end-of-file indicator was detected on the last input operation on the named stream and 0 if end-of-file has not been reached.
, объявленную в stdio.h.

Необходимо отметить, что в Вашей функции утечка памяти (взгляните на работу с переменной ndek). Вся память, которая выделена оператором new должна быть удалена оператором delete.
Ang_07
 Аватар для Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
28.04.2011, 22:02  [ТС]     определения конца файла #3
я специально оставляю, у меня список
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,217
Завершенные тесты: 1
28.04.2011, 22:51     определения конца файла #4
Цитата Сообщение от Ang_07 Посмотреть сообщение
у меня список
Понятно. Ну а с feof() все получилось?
Ang_07
 Аватар для Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
28.04.2011, 23:38  [ТС]     определения конца файла #5
да получилось, ещё до того как ты ответил... ппц.. тяжко было найти в инете...)
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.04.2011, 06:41     определения конца файла #6
fread возвращает количество считанных блоков, поэтому ее допустимо, и даже предпочтительно, вызывать прямо в while'е.
Ang_07
 Аватар для Ang_07
0 / 0 / 0
Регистрация: 09.11.2010
Сообщений: 47
29.04.2011, 08:23  [ТС]     определения конца файла #7
Кэп чтоле ?))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2011, 08:37     определения конца файла
Еще ссылки по теме:

Алгоритм определения конца предложения C++
Истинность конца файла C++
C++ Определение конца файла

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
29.04.2011, 08:37     определения конца файла #8
Ang_07, вам дело говорят! Нет бы прислушаться...
C
1
2
3
4
5
6
7
8
9
10
11
typedef struct {
 /* ... */
} mystruct_t;
 
/*... */
FILE * f;
mystruct_t ms;
/* ... */
while ( fread(&ms, sizeof(mystruct_t), 1, f) == 1 ){
  /* do something with ms */
}
а лучше весь файл оптом в массив структур прочитать (предварительно получив размер файла, поделив на размер структуры и создав массив под получившееся количество элементов), ну или блоками, если файл большой очень...
Yandex
Объявления
29.04.2011, 08:37     определения конца файла
Ответ Создать тему
Опции темы

Текущее время: 11:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru