Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с выводом сообщения в конце программы

32K
08 марта 2010 года
Lazarus Long
5 / / 29.11.2007
Доброго времени суток!

проблема весьма мелочна, но хотелось бы понять в чем ошибка.
программа, которую я написал весьма нелепо, но просто кодирует и декодирует (используя шифрование Цезаря) символы входящего файла, создавая файл с уже закодированными символами.
в процессе работы программы выводятся оповещающие сообщения, но вот последнее сообщение не выводится.

прошу помочь разобраться!


Код:
#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;
}


Заранее благодарен!
8.4K
09 марта 2010 года
z0rch
275 / / 02.09.2008
оператор freopen закрывает поток stdout и переназначает этот поток указателю потока.
это происходит у вас в строке
 
Код:
if ((out=freopen( proceeding,"w",stdout ))==NULL)

но обратно поток на экран вы не возвращаете, отсюда и проблема.

Once I've used freopen, how can I get the original stdout back?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог