Создание и реализация самого простого криптоалгоритма - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <string.h>
#include <stdio.h>
#include <conio.h>
 
int main(void)
{
   clrcscr ();
   FILE *stream;
   char ch;
 
   stream = fopen("text.txt", "w+");
 
   do
   {
      ch = fgetc(stream);
      putch(ch);
   } 
   while (ch != EOF);
 
   fclose(stream);
   return 0;
   getch ();
}
Ребята, программа должна открывать текстовый файл, считывать данные, кодировать по определённой формуле, запись кода в этот же файл и сохранение. Пока я написал кусочек, который по идее считывает информацию и выводит её на экран... Проблема в том, что информация в документе на экран не выводится.... Помогите, если сможете, в чём проблемка =)

Решение задачи: «Создание и реализация самого простого криптоалгоритма»

textual
Листинг программы
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
 
main()
{
    clrscr();
    int i;
    int key[5];
    char *ch, ch2, ch_temp;
    int temp;
    FILE *in_1, *out_1, *in_2, *out_2;
    printf("\n\t 1.zashifrovat'");
    printf("\n\t 2.rashifroat'");
    printf("\n");
    ch2=getche();
 
    printf("\n\tEnter key: ");
    for(i=0; i<5; i++)
    {
        *ch=getche();
        key[i]=atoi(ch);
    }
 
 
    switch(ch2)
    {
        case '1':
        {
 
            if ((in_1 = fopen("C:\\in.txt", "rt"))==NULL)
            {
                fprintf(stderr, "\n\tCannot open input file.\n");
                return 1;
            }
            if ((out_1 = fopen("C:\\out.txt", "wt"))==NULL)
            {
                fprintf(stderr, "\n\tCannot open output file.\n");
                return 1;
            }
 
            i=0;
            while (!feof(in_1))
            {
                ch_temp=fgetc(in_1);
                temp=ch_temp;
                temp=temp+key[i];
                i++;
                fputc(temp, out_1);
                if(i==5)
                {
                    i=0;
                }
            }
            fclose(in_1);
            fclose(out_1);
        }
        break;
        case '2':
        {
            if ((in_2 = fopen("C:\\out.txt", "rt"))==NULL)
            {
                fprintf(stderr, "\n\tCannot open input file.\n");
                return 1;
            }
            if ((out_2 = fopen("C:\\out2.txt", "wt"))==NULL)
            {
                fprintf(stderr, "\n\tCannot open output file.\n");
                return 1;
            }
            i=0;
            while (!feof(in_2))
            {
                ch_temp=fgetc(in_2);
                temp=ch_temp;
                temp=temp-key[i];
                i++;
                fputc(temp, out_2);
                if(i==5)
                {
                    i=0;
                }
            }
            fclose(in_2);
            fclose(out_2);
 
        }
    }
    return 0;
}

Объяснение кода листинга программы

  1. В начале программы объявляются переменные и функции:
    • i - счетчик;
    • key - массив для хранения ключа;
    • ch, ch2, ch_temp - переменные для работы с файлами и данными;
    • temp - временная переменная для хранения числовых значений;
    • in_1, out_1, in_2, out_2 - файлы для ввода и вывода данных.
  2. Далее идет запрос на ввод ключа с помощью функции getche().
  3. Затем выполняется проверка на открытие файлов in.txt и out.txt для чтения и записи соответственно. Если файлы не открылись, программа выводит сообщение об ошибке и завершается.
  4. В случае успешного открытия файлов, программа начинает шифрование или дешифрование данных в зависимости от выбранного режима (1 или 2).
  5. В процессе шифрования или дешифрования каждый символ из входного файла считывается, к нему прибавляется или отнимается соответствующий элемент ключа, а затем результат записывается в выходной файл.
  6. После завершения обработки всех символов, файлы закрываются.
  7. Если в процессе работы программы возникнут ошибки (например, некорректный ввод данных), программа выведет сообщение об ошибке и завершится.
  8. В конце программы возвращается значение 0, что означает успешное выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы