Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение/запись в файл 
:(
    Опции темы
ace1
Дата 16.10.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте! Такой вот вопрос: есть файл,который мы читаем, он представляет из себя массив одномерный в виде 10101010100010101010.... итд, структура файла
1 байт - что-то не знаю что(типо заголовок)
5 байтов- какая-то инфа(1)
8 байтов- другая инфа(2)
5 байтов-инфа (1)
8 байтов- инфа(2)
...........................
вот необходимо рассортировать инфу (1) в один файл, а (2) в другой файл, ну байты циклом выбрать (i+6)%9=0 думаю смогу, а с чтением-записью вопрос.. помогите код накидать, или ткните носом , что читать
PM MAIL   Вверх
borisbn
Дата 17.10.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

FILE * f_in = fopen( "filename.ext", "rb" );
if ( f_in == 0 )
    return false;
FILE * f_out1 = fopen( "out_filename_1.ext", "wb" );
if ( f_out1 == 0 ) {
    fclose( f_in );
    return false;
}
FILE * f_out2 = fopen( "out_filename_2.ext", "wb" );
if ( f_out2 == 0 ) {
    fclose( f_out1 );
    fclose( f_in );
    return false;
}

unsigned char first;
fread( &first, sizeof( first ), 1, f_in );
while ( !feof( f_in ) )
{
    unsigned char info_1[ 5 ];
    unsigned char info_2[ 8 ];
    if ( fread( info_1, sizeof( info_1[ 0 ] ), 5, f_in ) == 5 &&
         fread( info_2, sizeof( info_2[ 0 ] ), 8, f_in ) == 8 )
    {
        fwrite( info_1, sizeof( info_1[ 0 ] ), 5, f_out1 );
        fwrite( info_2, sizeof( info_2[ 0 ] ), 8, f_out2 );
    }
    if ( fread( info_1, sizeof( info_1[ 0 ] ), 5, f_in ) == 5 &&
         fread( info_2, sizeof( info_2[ 0 ] ), 8, f_in ) == 8 )
    {
        fwrite( info_1, sizeof( info_1[ 0 ] ), 5, f_out1 );
        fwrite( info_2, sizeof( info_2[ 0 ] ), 8, f_out2 );
    }
}
fclose( f_in );
fclose( f_out1 );
fclose( f_out2 );


оно ?

Это сообщение отредактировал(а) borisbn - 17.10.2010, 10:24


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mrbrooks
Дата 18.10.2010, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



borisbn, в дебилдере есть TFileSteam (TMemoryStream) - на мой скромный взгляд лучше их - чем сишную библу.
PM MAIL   Вверх
borisbn
Дата 18.10.2010, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



mrbrooks, IMHO чем меньше завязываешься на framework, тем лучше ( тем более дебилдера smile ). Если бы ты сказал, что лучше std::iostream, я бы полностью согласился, хотя мне синтаксис FILE больше нравится. Ну да это дело привычки.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mrbrooks
Дата 18.10.2010, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(borisbn @  18.10.2010,  09:57 Найти цитируемый пост)
IMHO чем меньше завязываешься на framework, тем лучше

ну это вопрос философский. я наоборот - сторонник использования того, что дает фреймворк. это удобнее, нагляднее, и не выбивается из общего стиля. также не стоит забывать о возможности привязки к VCL-гую и как следствие, избегания возможных костылей для привязки. вопросы кроссплатформенности я не рассматриваю. если и юзать стандартные библиотеки С or C++ - то в виде библиотек. Понятно - это все имхо.  smile 
PM MAIL   Вверх
ace1
Дата 18.10.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно, пожалуйста, небольшие комменты накидать //, не очень понял код, три файла создаем, а вот непосредственно с сортировкой
PM MAIL   Вверх
borisbn
Дата 18.10.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

// открыть входной файл для чтения
FILE * f_in = fopen( "filename.ext", "rb" );
...
// открыть 1-й выходной файл для записи
FILE * f_out1 = fopen( "out_filename_1.ext", "wb" );
...
// открыть 2-й выходной файл для записи
FILE * f_out2 = fopen( "out_filename_2.ext", "wb" );
...
// прочитать первый байт >>> что-то не знаю что(типо заголовок)
fread( &first, sizeof( first ), 1, f_in );
// прочитать из вх. файла 5 байт в массив info_1 и 8 байт в массив info_2
    if ( fread( info_1, sizeof( info_1[ 0 ] ), 5, f_in ) == 5 &&
         fread( info_2, sizeof( info_2[ 0 ] ), 8, f_in ) == 8 )
    {
// записать в 1-й вых. файл 5 байт входного файла
        fwrite( info_1, sizeof( info_1[ 0 ] ), 5, f_out1 );
// записать во 2-й вых. файл 8 байт входного файла
        fwrite( info_2, sizeof( info_2[ 0 ] ), 8, f_out2 );
    }
// прочитать из вх. файла 5 байт в массив info_1 и 8 байт в массив info_2
    if ( fread( info_1, sizeof( info_1[ 0 ] ), 5, f_in ) == 5 &&
         fread( info_2, sizeof( info_2[ 0 ] ), 8, f_in ) == 8 )
    {
// записать в 1-й вых. файл 5 байт входного файла
        fwrite( info_1, sizeof( info_1[ 0 ] ), 5, f_out1 );
// записать во 2-й вых. файл 8 байт входного файла
        fwrite( info_2, sizeof( info_2[ 0 ] ), 8, f_out2 );
    }




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
ace1
Дата 18.10.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



/uuuuu

Это сообщение отредактировал(а) ace1 - 18.10.2010, 16:30
PM MAIL   Вверх
ace1
Дата 18.10.2010, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо большое, прога запустилась кое-что подправил, значит открывыю я бинарный файл, что в нем понятия не имею, знаю лишь структуру, записывает он в 2 файла опять таки не имею понятия что и не знаю как проверить, открыл hex редактором -ничего непонятно, скажите чем можно открыть этот файл в виде строки с ноликами и единичками?  
PM MAIL   Вверх
ace1
Дата 18.10.2010, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



и еще вот , мне нужно , чтобы он писал в эти файлы несколько пакетов, рассортировывая 8 и 5  не ругайте, если туплю, я только разбираюсь

т.е вот :
1 байт - что-то не знаю что(типо заголовок) 
5 байтов- какая-то инфа(1) пакет 1 
8 байтов- другая инфа(2) пакет 1 
5 байтов-инфа (1) пакет 2
8 байтов- инфа(2) пакет 2
........................
5 байтов-инфа (1) пакет p 
8 байтов- инфа(2) пакет p

на выходе два файла со структорой 
1 файл:
5 байтов   1 пакет
5 байтов   2 пакет
5 байтов   p пакет
2 файл:
8 байтов 1 пакет
8 байтов 2 пакет
8 байтов p пакет
PM MAIL   Вверх
borisbn
Дата 18.10.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ace1, по методу Геббельса ? Повторить стопятьсот раз, чтобы запомнили ? smile
Ты скажи всю задачу, а не ту часть, которую я тебе уже рассказал как делать. М.б. для её решения вообще не нужно файлы открывать и что-то там читать/писать в них. Или выложи аттачем исходный файл хотя бы.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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