/**********************************************************
本人花了一下下午写的一个程序!文件加密程序可以自动转换
输入的文本文件加密或者解密!可以选择保存到文件!
<Edison wong>. QQ139767
**********************************************************/
#include <stdio.h>
#define N 10000
#define JIEMI -4-50+100
#define MI +4+50-100
void Nonetech(int len,char ch[]);
void tech(int len,char ch[]);
void Nonefun();
void fun();
void read();
void maindan();
void read()
{
FILE *fp;
char choose;
char zu;
char name[10];
printf("**********************************************************/n");
printf("请输入需要打开的文件:");
gets(name);
fp=fopen(name,"r");
printf("转换后的明文是:");
while(!feof(fp))
{
zu=fgetc(fp)JIEMI;
if(zu!='-'&&zu!='#')
putchar(zu);
}
putchar('/n');
printf("**********************************************************/n");
fclose(fp);
printf("回主菜单?(Y)/n");
scanf("%c",&choose);
getchar();
if(choose=='y'||choose=='Y')
maindan();
}
void maindan()
{
int a;
printf("请选择:/n");
printf("1,需要转换标点符号为密文!/n");
printf("2,不需要转换标点符号,标点为明文!/n");
printf("3,密文转换为明文!/n");
printf("4,退出?(Y)/n");
scanf("%d",&a);
getchar();
switch(a)
{
case 1:fun();break;
case 2:Nonefun();break;
case 3:read();break;
case 'Y':break;
case 'y':break;
}
}
void Nonetech(int len,char ch[])
{
int a;
for(a=0;a<len;a++)
{
if(ch[a]==','||ch[a]=='.'||ch[a]=='!'||ch[a]=='/"'||ch[a]==' ')
a++;
ch[a]=ch[a]MI;
}
}
void tech(int len,char ch[])
{
int a;
for(a=0;a<len;a++)
ch[a]=ch[a]MI;
}
void Nonefun()
{
char ch[N];char choose='y',tempa;char *p;
while(choose=='y'||choose=='Y')
{
int len=0,a;FILE *fp;char name[10];
printf("**********************************************************/n");
printf("请输入要转换的明文(不转换标点符号),最后请以#符号结束输入:/n");
gets(ch);
p=ch;
while(*p!='/0')
{
len++;
p++;
}
if(ch[len-1]=='#')
{
Nonetech(len,ch);
printf("转换后的密文是:");puts(ch);
printf("是否保存?(Y)");
tempa=getchar();
if(tempa=='y'||tempa=='Y')
{
printf("输入预保存的文件名: ");
scanf("%s",name);
getchar();
fp=fopen(name,"w");
for(a=0;a<len;a++)
fputc(ch[a],fp);
fclose(fp);
printf("OK!已经保存到当前目录下%s文件中./n",name);
}
else
getchar();
}
else
printf("错误!请在结尾输入符号#,否则无法进行转换!/n");
printf("**********************************************************/n");
printf("是否继续转换?(Y/N)/回主菜单(Z)/n");
scanf("%c",&choose);
getchar();
if(choose=='z'||choose=='Z')
maindan();
}
}
void fun()
{
char ch[N];char choose='y',tempa;char *p;
while(choose=='y'||choose=='Y')
{
int len=0,a;FILE *fp;char name[10];
printf("**********************************************************/n");
printf("请输入要转换的明文,最后请以#符号结束输入:/n");
gets(ch);
p=ch;
while(*p!='/0')
{
len++;
p++;
}
if(ch[len-1]=='#')
{
tech(len,ch);
printf("转换后的密文是:");puts(ch);
printf("是否保存?(Y)");
tempa=getchar();
if(tempa=='y'||tempa=='Y')
{
printf("输入预保存的文件名: ");
scanf("%s",name);
getchar();
fp=fopen(name,"w");
for(a=0;a<len;a++)
fputc(ch[a],fp);
fclose(fp);
printf("OK!已经保存到当前目录下%s文件中./n",name);
}
else
getchar();
}
else
printf("错误!请在结尾输入符号#,否则无法进行转换!/n");
printf("**********************************************************/n");
printf("是否继续转换?(Y/N)/回主菜单(Z)/n");
scanf("%c",&choose);
getchar();
if(choose=='z'||choose=='Z')
maindan();
}
}
void main()
{
maindan();
}