自己写的简单的文件加解密程序
下面是程序的代码,不过里面有一个小问题,有兴趣的同学可以研究下“讲变量num改为char看看会发生什么事情,可以的话解决它。”当然了加解密的算法非常简单,就是法伤来和大家交流交流的。
代码回复可见!
**** Hidden Message *****#include <stdio.h>
#include <stdlib.h>
void jiami();
void jiemi();
int main()
{
char *ch="声明:\n【1】该程序不保证运行的正确性,所以请在使用前备份操作文件。\n【2】使用该程序导致的一切不良后果由操作者承担。\n【3】您开始使用本程序即表示您已同意本声明。\n【4】感谢您的使用!\n";
intnum,temp;
printf("========文件加/解密程序========\n");
printf("\n%s\n",ch);
str:printf("\n\n========菜单========\n");
printf("【1】加密文件操作\n");
printf("【2】解密文件操作\n");
printf("【3】退出程序操作\n");
printf("\n\n请选择:");
yan:scanf("%d",&num);
if(num<1||num>3)
{
printf("%c未定义的指令,请重新输入:",num);
goto yan;
}
switch(num)
{
case 1:jiami();
break;
case 2:jiemi();
break;
case 3:exit(1);
}
printf("\n\n========成功完成========\n\n");
printf("========您希望========\n\n");
goto str;
return 0;
}
void jiami()
{
FILE *infile,*outfile;
char ofname,nfname,ch;
printf("\n请输入需要加密的完整文件名(包含扩展名)\n");
printf("文件名:");
ch=getchar();
gets(ofname);
printf("请输入加密后完整文件名\n");
printf("文件名:");
gets(nfname);
infile=fopen(ofname,"rb");
outfile=fopen(nfname,"wb");
if(infile==NULL||outfile==NULL)
{
printf("文件打开失败,程序已停止\n");
exit(1);
}
printf("\n\n========正在加密文件,请售后...========\n\n");
rewind(infile);
rewind(outfile);
while(!feof(infile))
{
ch=fgetc(infile);
ch+=10;
fputc(ch,outfile);
}
fclose(infile);
fclose(outfile);
}
void jiemi()
{
FILE *infile,*outfile;
char ofname,nfname,ch;
printf("\n请输入需要解密的完整文件名(包含扩展名)\n");
printf("文件名:");
ch=getchar();
gets(ofname);
printf("请输入解密后完整文件名\n");
printf("文件名:");
gets(nfname);
infile=fopen(ofname,"rb");
outfile=fopen(nfname,"wb");
if(infile==NULL||outfile==NULL)
{
printf("文件打开失败,程序已停止\n");
exit(1);
}
printf("\n\n========正在解密文件,请售后...========\n\n");
rewind(infile);
rewind(outfile);
while(!feof(infile))
{
ch=fgetc(infile);
ch-=10;
fputc(ch,outfile);
}
fclose(infile);
fclose(outfile);
}
看看 看看 进击的小FF 发表于 2018-1-17 14:32
if(num3)
{
printf("%c未定义的指令,请重新输入:",num);
en嗯是清楚些 if(num<1||num>3)
{
printf("%c未定义的指令,请重新输入:",num);
goto yan;
}
这一段是不是可以全都放在switch中最后的default中,必要的话再加一个while()的语句排除其他情况的非法输入。
个人觉得这么写清楚一些。
另外不是很推荐使用goto,一点小想法 {:5_97:}研究研究 自己写的简单的文件加解密程序 辛苦楼主了,支持楼主 ~....~!路过研究 路过看看!!! 看看 我就像看看隐藏的东西
不是XOR加密 昨天没看代码,是不是凯撒密码? 谢谢您了 楼主 xor加密吗
好贴啊 那个验证呢 学习学习 阴影中的曙光 发表于 2016-1-12 19:02
其实不太推荐用goto;考虑下我这种写法代替goto吧
恩恩,谢谢。
不过如果将判断的条件改为字符型就会出问题,
char num;
num=getchar();
while(num<'a'||num>'c')
这样的话while里面的语句就会执行一次,即使是输入a b c也是一样。我也想过加多一个getchar(),可是这样就会死循环了,
最后一个问题,你这个帖子的代码是怎么弄的?? 看下
页:
[1]
2