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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2010, 01:37   #1
griba
Новичок
Джуниор
 
Регистрация: 24.06.2010
Сообщений: 2
По умолчанию Работа с бинарным файлом.

Язык Си.
Проблема такая:
Создать два бинарных файла, один из них содержит числовую информацию. В результате преобразований в первом файле должны остаться только четные, а во втором только нечетные числа. Дополнительных массивов и файлов не использовать.

С созданием файла и записью чисел проблем нет. С записью во второй нечетных тоже. А вот как из первого убрать нечетные. Вот код:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
FILE *chet;
FILE *nechet;
int n, buf;
clrscr();
randomize();
chet=fopen("chet.bin", "wb");
printf("Введите n \n");
scanf("%d", &n);
while(n>0)
{
buf=random(8);
buf=buf+1;
fwrite(&buf, sizeof(int), 1, chet);
printf("%d ", buf);
n--;
}
fclose(chet);
chet=fopen("chet.bin", "r+b");
nechet=fopen("nechet.bin", "wb");
while(!feof(chet))
{
fread(&buf, sizeof(int), 1, chet);
if(!feof(chet))
if(buf%2==1)
fwrite(&buf, sizeof(int), 1, nechet);
}
fclose(chet);
fclose(nechet);
getch();
}
Как организовать "удаление" нечетных чисел в исходном файле с помощью позиционирования?

Последний раз редактировалось griba; 11.12.2010 в 03:02.
griba вне форума Ответить с цитированием
Старый 11.12.2010, 08:52   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

во второй файл (где нечетные) дописываем(в конец после нечетных) и четные.
потом их переписываем в первый и стираем из второго.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 11.12.2010, 12:12   #3
griba
Новичок
Джуниор
 
Регистрация: 24.06.2010
Сообщений: 2
По умолчанию

evg_m За идею спасибо, но: задачу необходимо решить через позиционирование в исходном файле.
*Да и как организовать "затирание" я не совсем предствляю. Просто перезаписывать пробелами?
*Можно ли (допустим в середину файла) записать что-нибудь вроде "конец строки", так сказать отсечь остальное содержимое?

Уж если нельзя (трудоемко осуществить через позиционирование), то:
Исходный файл:
1 2 3 4 5 6 7 8 9
Файл для нечетных
1 3 5 7 9 * 2 4 6 8 (* - некий условный разделитель)
Теперь в исходный файл перезаписываем все что после разделителя
2 4 6 8
Как из файла для нечетных удалить все, что после разделителя?

Последний раз редактировалось griba; 11.12.2010 в 12:33.
griba вне форума Ответить с цитированием
Старый 11.12.2010, 13:06   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
но: задачу необходимо решить через позиционирование в исходном файле.
читаем справку список операций с файлами
там есть что-то вроде seek (fseek) (я не знаю С и не могу привести точное название ). Это и есть операция ПОЗИЦИОНИРОВАНЯ (установка указателя в произволное указанное пользователем место файла для последующих опрераций чтения/записи) в файле. С использованием этого оператора можно гулять по файлу как нам вздумается (писать/читать) в произвольное место файла и переставлять элементы в нужном нам порядке.
Обрезать файл это изменить размер что-то вроде SetSize (не знаю С и название может быть неточным).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 11.12.2010, 13:08   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Просто перезаписывать пробелами?
Лучше нулями. Прикольнее будет, и надежнее.
Цитата:
через позиционирование в исходном файле.
fseek еще не отменяли.
Вот сюда-ка загляни-ка:http://www.programmersforum.ru/showthread.php?t=105501
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом Ямерт Помощь студентам 2 06.12.2010 18:23
Работа с бинарным файлом (С) madmonk Помощь студентам 4 20.11.2010 20:58
Проблема с бинарным файлом melodeen12 Операционные системы общие вопросы 6 02.08.2010 01:15
работа с бинарным файлом Геннадий Win Api 8 22.10.2009 18:49
работа с бинарным файлом Bayazet Помощь студентам 3 17.03.2009 15:37