文件加解密,可另存文件

/**********************************************************
  本人花了一下下午写的一个程序!文件加密程序可以自动转换
  输入的文本文件加密或者解密!可以选择保存到文件!
 
  <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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值