~风介~ 发表于 2015-3-8 22:52:29

【C/C++】Caesar

本帖最后由 ~风介~ 于 2015-5-23 23:41 编辑

代码:
/*
powered by Niko!!!
bbs.fishc.com
*/

#include <stdio.h>

#define N 3

void createMenu();
void Encryption();
void Decryption();
void Encryption_Block(char inputfile,char outputfile);
void Decryption_Block(char inputfile,char outputfile);
char Caecar(char c,int n);


void createMenu()
{
      printf("1.Encrypt\n2.Decrypt\n3.Quit\n");
      printf("Input Your Choice:");
}

void Encryption()
{
      char infile,outfile;
      
      printf("===Encryption===\n");
      printf("Input Your Source File Name:");
      scanf("%s",infile);
      //printf("%s\n",infile);
      printf("Input Your Target File Name:");
      scanf("%s",outfile);
      //printf("%s\n",outfile);
      
      Encryption_Block(infile,outfile);
}

void Encryption_Block(char inputfile,char outputfile)
{
      FILE *in,*out;
      int ch;
      
      if ((in = fopen(inputfile,"rb")) != NULL)
                if ((out = fopen(outputfile,"wb")) != NULL)
                        while ((ch = fgetc(in)) != EOF)
                        {
                              ch = Caecar(ch,N);
                              fputc(ch,out);
                        }
                else
                        printf("Can't Open Output File!");
      else
                printf("Can't Open Input File!");
   
      printf("\nEncrypt is over!\n");
    fclose(in);
    fclose(out);
               
}

void Decryption()
{
      char infile,outfile;
      
      printf("===Decryption===\n");
      printf("Input Your Source File Name:");
      scanf("%s",infile);
      //printf("%s\n",infile);
      printf("Input Your Target File Name:");
      scanf("%s",outfile);
      //printf("%s\n",outfile);
      
      Decryption_Block(infile,outfile);
}

void Decryption_Block(char inputfile,char outputfile)
{
      FILE *in,*out;
      int ch;
      
      if ((in = fopen(inputfile,"rb")) != NULL)
                if ((out = fopen(outputfile,"wb")) != NULL)
                        while ((ch = fgetc(in)) != EOF)
                        {
                              ch = Caecar(ch,(26-N));
                              fputc(ch,out);
                        }
                else
                        printf("Can't Open Output File!");
      else
                printf("Can't Open Input File!");
   
      printf("\nDecrypt is over!\n");
    fclose(in);
    fclose(out);
               
}

char Caecar(char c,int n)
{
      //printf("%d",n);
      if(c>='A'&&c<='Z')
      {
                return ('A'+(c-'A'+n)%26);
      }
      else if(c>='a'&&c<='z')
      {
                return ('a'+(c-'a'+n)%26);
      }
      else
                return c;
}

int main (int argc, char *argv[])
{
      char ch;
      createMenu();
      ch = getchar();
      //putchar(ch);
      

      if ('3' != ch)
      {
                //printf("Bingo!\n");      
                if ('1' == ch)
                        Encryption();
                else
                        Decryption();
      }
      else
      {
                exit(0);
      }
      
      return 0;
}


C++编程小组

小甲鱼 发表于 2015-4-1 01:54:58

赞,介介的脚步已经扩展到C语言啦~

~风介~ 发表于 2015-4-1 09:16:10

小甲鱼 发表于 2015-4-1 01:54
赞,介介的脚步已经扩展到C语言啦~

{:7_140:}

彼岸花316 发表于 2015-8-20 15:25:34

{:1_1:}{:1_1:}{:1_1:}
页: [1]
查看完整版本: 【C/C++】Caesar