• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Криптографическая задача.

  • Автор темы aaaaaa
  • Дата начала
A

aaaaaa

Способ шифрования текста состоит в замене каждого символа алфавита на соответствующий ему порядковый номер. Однозначные номера, чтобы избежать путаницы, записываются так: 01, 02, …, 09. Расшифровать текст сообщения, хранящийся в файле. Результат сохранить в другом файле, продублировав его на экране.

В общем, решил создать из цифр фаила массив вида x={"08","05","12"......} с помощью обьединения строк и добавления в массив.

Программа крашится после вывода тескта фаила. Помогите, пожалуйста, найти ошибку, или подскажите другой способ решения. Заранее благодарен. :)
C++:
#include <iostream>
#include <fstream.h>
#include <stdio.h>


using namespace std;

int main()
{

int j=0;
int k=0;
const int x=26;
const int y=100;
char* code[x]={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26"};
char* decode[x] ={"a","b","c","d","e","f","g","h","i","g","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
FILE *file = fopen("file.txt","r");
FILE *outfile =fopen ("output.txt", "wb");
char str[y];
char *enter;
while(!feof(file))
{
enter=fgets (str,y,file);
}
puts(str);
int h =strlen(str);

char* results[y];
for (int i=0; i<h; i+=2)
{
k=i+1;
const char* enterc=(const char*)enter[i];
const char* enterca=(const char*)enter[k];
j++;
strcpy(results[j],enterc);
results[j]=strcat(results[j],enterca);
}
for (int i=0; i<h; i++)
{
for (int g=0; g<x; g++)
{
if(results[i]==code[j])
{
results[i]=decode[j];
}
}
}
cout << endl;
fprintf (outfile,"%s",results);
printf ("%s",results);
fclose(file);
return 0;
}
 
I

Ivka

1) FILE *file = fopen("file.txt","r");
FILE *outfile =fopen ("output.txt", "wb");
вы так уверены, что файлы открываются нормально?
ИМХО нужна проверка...

2) enter=fgets (str,y,file);
вы считываете по строчке и присваеваете enter , не добавляете, а присваиваете(вконце enter будеть иметь указатель на последнюю строкуб но никак не всю информацию с файла)...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!