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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2011, 14:33   #1
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию Считать блоками по 64 бит из файла. С

Доброго времени суток!
Необходимо написать программу, реализующию сеть Фейстеля.
Сейчас встала проблема, как считать из файла информацию блоками по 64 бит каждый.
Как сделать так, чтобы в цикле программа считывала файл блоками, пока не достигнет конца файла?
Попробовал так, но программа выдаёт на экран содержимое файла без остановки:
Код:
#include <stdio.h>
 
int main(int argc, char** argv)
{
        FILE *OpenFile, *ResultFile;
        char Buffer[64];
        OpenFile=fopen("/home/alexander/test1.txt","rb");
        while(OpenFile != EOF)
        { 
                fread(Buffer,64,sizeof(char),OpenFile);
                /*
                 * Далее, блок длиной 64 бита, хранимый в Buffer,
                 * будет подаваться в функцию Crypt, 
                 * по возвращению записывается в другой файл test2.txt 
                 * (это ResultFile, оформлен будет позже, когда с OpenFile разберусь)
                 */
                printf("%s\n",Buffer);
        }
        fclose(OpenFile);
        
        return 0;
}
Да, по поводу последнего блока. Не факт, что он будет равен 64 бит, необходимо, чтобы недостающие байты заполнялись нулями до полного блока. Подскажите, как это наиболее оптимально сделать?
В С новичёк.
Pecho вне форума Ответить с цитированием
Старый 04.02.2011, 15:03   #2
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

64 бита = 8 байт. Не понятно, почему вы читаете из файла блоками по 64 байта а не по 8 байт.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 04.02.2011, 15:07   #3
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию

Исправил на char Buffer[8];
и
fread(Buffer,8,sizeof(char),OpenFil e);
спасибо
Но всё, как цикл построить?

Последний раз редактировалось Pecho; 04.02.2011 в 15:18.
Pecho вне форума Ответить с цитированием
Старый 04.02.2011, 15:10   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

while(!feof(OpenFile))
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.02.2011, 15:14   #5
Pecho
Пользователь
 
Регистрация: 23.11.2010
Сообщений: 37
По умолчанию

Спасибо за помощь
А как быть с последним блоком?
Pecho вне форума Ответить с цитированием
Старый 04.02.2011, 15:15   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

используйте цикл с пост условием.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считать строку из файла Farrel Общие вопросы C/C++ 1 09.12.2010 01:47
считать из файла в word32 переменную Шаина Общие вопросы C/C++ 2 17.06.2010 23:58
как считать с текстового файла? denim1 Помощь студентам 2 16.05.2010 15:06
Побуквенно считать слово из файла Zloy_Doomer Общие вопросы Delphi 13 18.12.2008 12:40
Считать определенную строку из файла DimkinStd Работа с сетью в Delphi 4 15.02.2007 22:30