Бронирование турбазы доступно на сайте http://mirturbaz.ru [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Профессиональное » C / C++ / Qt » Вспоминаем работу с файлами (простой шифровальщик) (На первом занятие по ОС было - сделать шифровальщик)
Вспоминаем работу с файлами (простой шифровальщик)
COBAДата: Пятница, 13.02.2009, 00:25 | Сообщение # 1
Великий админ
Группа: Суровые Одмины
Сообщений: 108
Репутация: 12
Статус: Offline
Много у кого вопросы, как можно было реализовать этот самый примитивный шифровальщик без библиотеки Qt.

Вот хорошо закоментированный пример специально для вас - Код от WildMan'a:

Code

#include <stdio.h>

int main(int argc, char** argv)
{
   FILE *f;  //указатель на файл на диске
     
   int n = 0;   // тут будем хранить количество записей, примитивно, но быстро и понятно
   char temp[1024];    // это временный буфер, туда читаем весь файл, потом от туда записываем в файл, расход по памяти конечно, но опять же бытсро и понятно, без извращений в операциях с файлом

   f = fopen(argv[1], "r+");    //открываем файл на запись/чтение (второй параметр мод открытия), первый - путь до файла (тут путь который задан аргументом в командной строке)

   while(!feof(f))    //пока файл не кончился
   {
    fread(&temp[n], sizeof(char), 1, f);    //читаем по одному байту из файла в массив, можно читать сразу все, но так нагляднее, т.е. можно без цикла за всего один вызов fread прочесть весь массив из файла

    n++;
   }

   for(int i = 0; i < n-1; i++)
   {
    temp[i]-=1;    //типо шифруем <img rel="usm" src="http://fevt.3dn.ru/Smiles/smile3.gif" border="0" align="absmiddle" alt=":)">
   }

   fseek(f, 0, SEEK_SET);    //сдвигаем указатель в файле на 0 (начало), первый параметр - файл, второй - позиция, третий - мод откуда считать (в нашем случае с начала)
     
   for(int i = 0; i < n-1; i++)
   {
    fwrite(&temp[i], sizeof(char), 1, f);    //пишем в файл, параметры такие же как и в fread, опять же можно за раз, ксттаи вместо sizeof(char) можно сразу его размер писать (1 байт), но так более переносимо и универсально
   }

   fclose(f);    //закрываем файл

   return 0;
}

Это простое консольное приложение на С++ в качесте примера! Здесь не делается проверка параметров, поэтому при простом запуске .exe файла прога вылетит!
Работает так: мышкой наводите любой файл на .exe файл.. он шифруется (алгоритм очень примитивный, разберётесь^^ ). Расшифровщик тоже не предусмотрен.. сами додумаете, кому надо)) главное принцип, что бы вам был ясен.

Прикреплен архив с проектом под вижлСтудию...

Прикрепления: laba1_sample.rar (52.5 Kb)



Без риска победив, без славы торжествуешь...
 
Форум » Профессиональное » C / C++ / Qt » Вспоминаем работу с файлами (простой шифровальщик) (На первом занятие по ОС было - сделать шифровальщик)
  • Страница 1 из 1
  • 1
Поиск: