c语言编写 文件加密问题(文件中有字母,数字,其他符号对文件中的字母,用该字母之后的第5个字母替换,如

九、 文件加密问题(文件中有字母,数字,其他符号)
据说最早的密码来自于罗马的凯撒大帝,对消息加密的方法是:对文件中的字母,用该字母之后的第5个字母替换,如原文中是A替换为F,Z替换为E),数字和其他符号不变,现在要求:读入一个原文文件,加密,输出加密后的文件内容;
读入一个加密后的文件,输出解密后的文件

改变 #define N 5 中的数,设定字母移位的数量!

/************************************************************************/
/* 版权所有:信息工程学院 王明 使用时请注明出处!!
/* 算法:凯撒密码体制 本程序实现加密和解密 */
/************************************************************************/

#include <stdio.h>
#define N 5

void jiami(char namea[256])
{
FILE *fp_jiami,*fp_file2;
char c;
fp_jiami=fopen(namea,"rb");
fp_file2=fopen("file2.txt","wb");
while(EOF!=(fscanf(fp_jiami,"%c",&c)))
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
{
c=c+N;
if (!((c>='A'&&c<='Z')||(c>='a'&&c<='z')))c=c-26;
if(c>='a'&&c<='z')c=c-32;
}
fprintf(fp_file2,"%c",c);
}
fclose(fp_file2);
fclose(fp_jiami);
}

void jiemi(char en_name[256])
{
FILE *fp_jiemi,*fp_file3;
char c;
fp_jiemi=fopen(en_name,"rb");
fp_file3=fopen("file3.txt","wb");
while(EOF!=(fscanf(fp_jiemi,"%c",&c)))
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
{
c=c-N;
if (!((c>='A'&&c<='Z')||(c>='a'&&c<='z')))c=c+26;
if(c>='A'&&c<='Z')c=c+32;
}

fprintf(fp_file3,"%c",c);
}
fclose(fp_file3);
fclose(fp_jiemi);

}

int main()
{
char name[256];
int n;

printf("输入你要操作的TXT文本:");
gets(name);

printf("\n请选择需要进行的操作:\n");
printf(" 1:加密 2:解密 \n");
printf("输入你的选择:");

scanf("%d",&n);
switch(n) {
case 1:{jiami(name);printf("\t加密成功!!\n\n");
break;}
case 2:{jiemi(name);printf("\t解密成功!!\n\n");
break;}
default:{printf("输入操作不存在!");}
}

return 0;

}
温馨提示:答案为网友推荐,仅供参考