Прежде чем я объясню решение вышеприведенного кода,
Позвольте мне рассказать вам эти вещи в первую очередь. Остерегайтесь ненужного определения переменных в вашей программе.
Я вижу много потерь памяти в вашем коде. Каждый может написать программу, но тот, кто делает ее проще, получает корону. Помните об этом, когда вы работаете над программированием.
Я вижу ненужную переменную i, определение в ваших функциях Encrypt и Decrypt. и нет необходимости переходить к определению нового байтового символа. Вы можете отсортировать его как
byte=byte+25 \\ even that makes your work no need of Newbyte char variable.
Сотрите определения int n, int i, чтобы сделать ваш код лучше. И самое важное, что вы действительно должны знать, это
you cannot use char a;a=getc(Filepointer);
помните, что EOF возвращает -1, когда достигает конца файла и если вы используете char. Он не работает. Тип данных Char может обрабатывать только положительные данные. Даже если вы назначите -1 для char, он внутренне сохранит его как положительное число, которое вы можете проверить в Google.
so never use char data type for checkin EOF use int datatype
и, как упоминал Рональд, вы делаете это как
while((Byte=getc(Filepointer))!=EOF)
Это ошибка, которую вы сделали. Сделайте это типом данных типа int. И, пожалуйста, проверьте предыдущие вопросы. Выполните, на самом деле, дублирующий вопрос. Некоторые люди могут относиться к ним как к отрицательным.
Лучшим стилем шифрования и дешифрования является использование побитовых операций, а не сложение
Byte=Byte^200; To encrypt \\ just a sample
Byte=Byte^200; To decrypt \\ you can make more complicated
Вот как ты должен это сделать. Это дает вам большую безопасность по сравнению с добавлением 25 к вашему символу ACSII. Вы можете даже зашифровать его, задав некоторые предопределенные правила. Надеюсь, вы получили ответ и решили свою проблему. Спасибо