#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
char codingCezar(char symbol)
{int symbolCode;
int key=8;
symbolCode = symbol;
symbolCode = symbolCode + key;
if ( symbolCode>256 )
symbolCode=symbolCode-256;
else if ( symbolCode<0 )
symbolCode=symbolCode+256;
symbol= symbolCode;
return symbol;
}
int decodingCezar(char symbol)
{int symbolCode;
int key=8;
symbolCode = symbol;
symbolCode = symbolCode - key;
if ( symbolCode>256 )
symbolCode=symbolCode-256;
else if ( symbolCode<0 )
symbolCode=symbolCode+256;
symbol= symbolCode;
return symbol;
}
int main(void)
{FILE *in;
FILE *out;
char entering[20];
char proceeding[20];
int codORde;
int a;
char symbol;
cout << "Start" << endl << "Input entering file name: ";
cin >> entering;
cout << "Input proceeding file name: ";
cin >> proceeding;
cout << "Coding(1) or decoding(2)? ";
cin >> codORde;
cout << "Coding in progress...." << endl;
if ((in=fopen( entering,"r" ))==NULL)
{printf ("Cant open.\n");
exit(1);
}
if ((out=freopen( proceeding,"w",stdout ))==NULL)
{printf("Cant open.\n");
exit(1);
}
if (codORde==1)
{while((symbol = fgetc(in)) != EOF)
printf("%c", codingCezar(symbol));
}
else if (codORde==2)
{while((symbol = fgetc(in)) != EOF)
printf("%c", decodingCezar(symbol));
}
fclose (out);
fclose (in);
printf("Its done!");
getch();
return 0;
}
Проблема с выводом сообщения в конце программы
проблема весьма мелочна, но хотелось бы понять в чем ошибка.
программа, которую я написал весьма нелепо, но просто кодирует и декодирует (используя шифрование Цезаря) символы входящего файла, создавая файл с уже закодированными символами.
в процессе работы программы выводятся оповещающие сообщения, но вот последнее сообщение не выводится.
прошу помочь разобраться!
Код:
Заранее благодарен!
это происходит у вас в строке
Код:
if ((out=freopen( proceeding,"w",stdout ))==NULL)
но обратно поток на экран вы не возвращаете, отсюда и проблема.
Once I've used freopen, how can I get the original stdout back?