当前位置: 代码迷 >> C语言 >> 文件加密
  详细解决方案

文件加密

热度:643   发布时间:2007-10-26 11:51:40.0
文件加密

刚学c时突发奇想就写了这个,高手莫笑我.
/*
Name: easysecret V1.0
Copyright:
Author: 随心
Date: 20-09-07 23:33
Description:
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

/*******写文件函数*************/
void write(void)
{
FILE *fp;
int n;
char name[30],_name[30],ch,flag;
printf("说明\n");
printf("此程序将您的重要资料写成一个二进制文件,\n以便起到保护作用.");
printf("是否要继续(Y/N):");
flag=getchar();
if(flag=='Y'||flag=='y'||flag=='\n')
{
printf("输入你的保密文件名:");
w: gets(name);
sprintf(_name,"c:\\secret\\%s.sec",name);
if((fp=fopen(_name,"wb"))!=NULL) //注意:这里一定不能少了fp=
{
printf("输入你要进行加密的资料:\n");
ch=getchar();
while(ch!=EOF)
{
fputc(ch,fp);
ch=getchar();
}
printf("是否保存(Y/N):");
flag=getchar();
if(flag=='y'||flag=='Y'||flag=='\n')
n=fclose(fp);
else
exit(0);
if(n==0)
printf("保存成功!");
}
else
{
system("md c:secret");
printf("确认输入:");
goto w;
printf("建立文件失败,任意键退出...");
getch();
exit(0);
}
}
else
{
printf("谢谢使用本程序!\n");
getch();
exit(0);
}
}

/********读文件函数*************/
void read(void)
{
FILE *fp;
char reader,path[60],_path[60],flag,name[30];
printf("是否从默认文件夹中读取(Y/N):");
flag=getchar();
getchar();
if(flag=='\n'||flag=='y'||flag=='Y')
{
printf("输入文件名:");
gets(name);
sprintf(_path,"c:\\secret\\%s.sec",name);
reader: system("cls");
printf("以下是加密文件的内容:\n");
if((fp=fopen(_path,"rb"))!=NULL)
{
rewind(fp);
reader=fgetc(fp);
while(reader!=EOF)
{
putchar(reader);
reader=fgetc(fp);
}
putchar('\n');
printf("文件读取结束!\n");
}
else
{
printf("文件不存在!\n");
getch();
exit(0);
}
}
if(flag=='n'||flag=='N')
{
printf("输入文件路径\n");
printf("例如:c:\\\\secret\\\\a \n");
gets(path);
flag='y';
sprintf(_path,"%s.sec",path);
goto reader;
}
fclose(fp);
}

/******菜单函数*****/
char menu(void)
{
char choice;
printf("================================\n");
printf("1 将一些重要资料写成加密文件\n");
printf("2 读一个加密文件\n");
printf("0 退出\n");
printf("=================================\n");
printf("choice:");
choice=getchar();
getchar();
return choice;
}

/******主函数********/
int main(void)
{
char _choice;
_choice=menu();
while(1)
{
switch(_choice)
{
case '0':exit(0);
case '1':
{
write();
getch();
system("cls");
_choice=menu();
}
break;
case '2':
{
read();
getch();
system("cls");
_choice=menu();
}
break;
default :printf("输入错误,请重新输入:");
}
}
return 0;
}







搜索更多相关的解决方案: 二进制  文件  printf  include  

----------------解决方案--------------------------------------------------------
LZ刚学C?
那学成之后成什么样子
拭目以待
----------------解决方案--------------------------------------------------------
我说的是刚学C
----------------解决方案--------------------------------------------------------

请问你这是用什么编译器的哦?


----------------解决方案--------------------------------------------------------

DEV-CPP 4.9.2

好象(网吧上网的)是这个版本吧,反正用的是DEV-CPP

[此贴子已经被作者于2007-10-26 16:58:53编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案