关于C语言的凯撒加密
在网上找的参考代码在VC2010上运行#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<windo...
在网上找的参考代码 在VC2010上运行
#include<stdio.h>#include<conio.h>#include<stdlib.h>#include <windows.h>#include <string.h>
void menu()/*菜单,1.加密 2.解密 3.退出*/{//clrscr();printf("\n===============================================================================");printf("\n1凯撒加密");printf("\n2.凯撒解密");printf("\n3.退出\n");printf("===============================================================================\n");printf("请选择:");return;}
char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/{while(ch>='A'&&ch<='Z'){return ('A'+(ch-'A'+n)%26);}while(ch>='a'&&ch<='z'){return ('a'+(ch-'a'+n)%26);}return ch;}
int main(){int i,n;char ch0,ch1;FILE *in,*out;char infile[30],outfile[30];
menu();ch0=getch();
while(ch0!='3'){if(ch0=='1'){ printf("\n输入要加密的文件:"); scanf("%s",infile);
if((in=fopen(infile,"r"))==NULL)
{ printf("无法打开文件!\n"); getch(); exit(0); }
printf("输入秘钥:"); scanf("%d",&n);
printf("输入加密后文件的文件名:"); scanf("%s",outfile);
if((out=fopen(outfile,"w"))==NULL) { printf("无法打开文件!\n"); fclose(in); getch(); exit(0); }
while(!feof(in))/*加密*/ { fputc(encrypt(fgetc(in),n),out); }
printf("\nEncrypt is over!\n"); fclose(in); fclose(out); //sleep(1);}
if(ch0=='2'){ //clrscr(); printf("\nPlease input the infile:"); scanf("%s",infile);/*输入需要解密的文件名*/
if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n"); printf("Press any key to exit!\n"); getch(); exit(0); }
printf("Please input the key:"); scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/
n=26-n;
printf("Please input the outfile:"); scanf("%s",outfile);/*输入解密后文件的文件名*/
if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n"); printf("Press any key to exit!\n"); fclose(in); getch(); exit(0); }
while(!feof(in)) { fputc(encrypt(fgetc(in),n),out); } printf("\nDecrypt is over!\n"); fclose(in); fclose(out); //sleep(1);}
//clrscr();
printf("\nGood Bye!\n");//sleep(3);
getch();}return 0;}
结果就这样 我有把文件放在项目里面啊 展开
#include<stdio.h>#include<conio.h>#include<stdlib.h>#include <windows.h>#include <string.h>
void menu()/*菜单,1.加密 2.解密 3.退出*/{//clrscr();printf("\n===============================================================================");printf("\n1凯撒加密");printf("\n2.凯撒解密");printf("\n3.退出\n");printf("===============================================================================\n");printf("请选择:");return;}
char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/{while(ch>='A'&&ch<='Z'){return ('A'+(ch-'A'+n)%26);}while(ch>='a'&&ch<='z'){return ('a'+(ch-'a'+n)%26);}return ch;}
int main(){int i,n;char ch0,ch1;FILE *in,*out;char infile[30],outfile[30];
menu();ch0=getch();
while(ch0!='3'){if(ch0=='1'){ printf("\n输入要加密的文件:"); scanf("%s",infile);
if((in=fopen(infile,"r"))==NULL)
{ printf("无法打开文件!\n"); getch(); exit(0); }
printf("输入秘钥:"); scanf("%d",&n);
printf("输入加密后文件的文件名:"); scanf("%s",outfile);
if((out=fopen(outfile,"w"))==NULL) { printf("无法打开文件!\n"); fclose(in); getch(); exit(0); }
while(!feof(in))/*加密*/ { fputc(encrypt(fgetc(in),n),out); }
printf("\nEncrypt is over!\n"); fclose(in); fclose(out); //sleep(1);}
if(ch0=='2'){ //clrscr(); printf("\nPlease input the infile:"); scanf("%s",infile);/*输入需要解密的文件名*/
if((in=fopen(infile,"r"))==NULL) { printf("Can not open the infile!\n"); printf("Press any key to exit!\n"); getch(); exit(0); }
printf("Please input the key:"); scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/
n=26-n;
printf("Please input the outfile:"); scanf("%s",outfile);/*输入解密后文件的文件名*/
if((out=fopen(outfile,"w"))==NULL) { printf("Can not open the outfile!\n"); printf("Press any key to exit!\n"); fclose(in); getch(); exit(0); }
while(!feof(in)) { fputc(encrypt(fgetc(in),n),out); } printf("\nDecrypt is over!\n"); fclose(in); fclose(out); //sleep(1);}
//clrscr();
printf("\nGood Bye!\n");//sleep(3);
getch();}return 0;}
结果就这样 我有把文件放在项目里面啊 展开
1个回答
2015-06-04
展开全部
你需要添加路径: ../file.txt;
因为你的exe文件在debug文件夹下,在该文件夹下没有你输入的哪个文件,程序中是只读的形式打开文件的。所以,会提示存出错。
两种解决办法:
第一个:将exe拷贝到加密文件的路径下
第二个:将文件烤到exe文件路径下。
根本的解决办法就是: 给定文件的相对路径或者绝对路径,绝对不会出现问题的。
因为你的exe文件在debug文件夹下,在该文件夹下没有你输入的哪个文件,程序中是只读的形式打开文件的。所以,会提示存出错。
两种解决办法:
第一个:将exe拷贝到加密文件的路径下
第二个:将文件烤到exe文件路径下。
根本的解决办法就是: 给定文件的相对路径或者绝对路径,绝对不会出现问题的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询