Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 16:34   #1
mishanic
 
Аватар для mishanic
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию Строки и файлы. Шифрование

Задача: Прочитать текст из файла и "зашифровать" его, смещением букв на К. И сохранить в тот же файл.
Проблема:
1. Не получилось работать с одним файлом.
2. С кирилицей полная ерунда, меняю промежутки, а он либо выдает критические ошибки при работе, либо не корректно себя ведёт.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void EncodeText(char name[],int K)
{
	char ch;
	FILE *fp,*fs;
	  if((fp=fopen(name, "r+"))==NULL) {
		  printf("Open Error!.\n");
		  exit(1);
	  }
	  
	  if((fs=fopen("save.txt", "w"))==NULL) {
		  printf("Open Error!.\n");
		  exit(1);
	  }
	int t=0;
	 do {
		 if(t) putc(ch, fs);
		 ch = getc(fp);

		if(65<=ch && ch<=90)  if (ch+K<=90)  ch=ch+K; else ch=ch+K-26;
		if(97<=ch && ch<=122) if (ch+K<=122) ch=ch+K; else ch=ch+K-26;
	t=1;
	 } while(ch!=EOF);

	  fclose(fs);
	  fclose(fp);

}

int main(void)
{
	char name[100]; int K;
	gets(name);
	scanf("%d",&K);
	EncodeText(name,K);
	_getch();
}
Спасибо.

Шифруем только буквы.
Причем по условию не латиницу, а кирилицу (

Последний раз редактировалось Stilet; 14.12.2009 в 16:42.
mishanic вне форума Ответить с цитированием
Старый 14.12.2009, 16:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
if(65<=ch && ch<=90) if (ch+K<=90) ch=ch+K; else ch=ch+K-26;
if(97<=ch && ch<=122) if (ch+K<=122) ch=ch+K; else ch=ch+K-26;
А зачем тебе эти условия вообще?
Просто делай ch+=k
А при расшифровке ch-=k;
Только учти там проверку на ch+k<255 поставить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2009, 17:11   #3
mishanic
 
Аватар для mishanic
 
Регистрация: 12.12.2009
Сообщений: 5
По умолчанию

Потому что "Символы не являющиеся русскими буквами при шифровании не изменяются" - условие (
mishanic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование строки. SoundMan Общие вопросы C/C++ 2 10.05.2009 16:38
Файлы, строки. Паскаль Safary Помощь студентам 6 08.12.2008 18:04
Строки и файлы BR@BUS Общие вопросы Delphi 5 08.04.2008 23:54
Массивы символов (строки) символьные файлы. anarchist Помощь студентам 2 24.12.2007 09:16