需先创建源文件;
---------------------------------------------------------------------------------------------------------------------------------
fun.c文件内容
#include<stdio.h>
#include<stdlib.h>
void print_help(void)
{
printf("***********1:加密文件******************\n");
printf("***********2:解密文件******************\n");
printf("***********3:退出程序******************\n");
}
void get_file_name(char *dest_file_name,char *src_file_name)
{
printf("请输入你的源文件名称(30个字符):");
scanf("%s",src_file_name);
printf("请输入你的目的文件名称(30个字符):");
scanf("%s",dest_file_name);
return;
}//输入源文件和目的文件名;
char *read_src_file(unsigned long *file_length,char *src_file)
{
FILE *fp=NULL;
char *data=NULL;
fp=fopen(src_file,"r");
if(fp==NULL)
{
perror("fp");
return NULL;
}
fseek(fp,0,2);
*file_length=ftell(fp);
rewind(fp);
data=(char *)calloc(1,*file_length);
if(data==NULL)
{
perror("data");
return NULL;
}
fread(data,*file_length,1,fp);
fclose(fp);
return data;
}//读取源文件内容,读取到字符数组里;
char *file_text_encrypt(char *src_file_text,unsigned long length,unsigned int password)
{
int i=0;
for(i=0;i<length;i++)
{
src_file_text[i]+=password;
}
return src_file_text;
}//通过字符数组加密;然后反回;
void save_file(char *text,unsigned long length,char *file_name)
{
FILE *fp=NULL;
fp=fopen(file_name,"w");
if(fp==NULL)
{
perror("fp");
return;
}
fwrite(text,length,1,fp);
fclose(fp);
if(text!=NULL)
{
text=NULL;
}
printf("保存成功\n");
fclose(fp);
}//将字符数组写入目的文件里;
char *file_text_dncrypt(char *src_file_text,unsigned long length,unsigned int password)
{
int i=0;
for(i=0;i<length;i++)
{
src_file_text[i]-=password;
}
return src_file_text;
}//解密
加密全过程和解密全过程函数一样,只是函数加密和解密函数有一点.
fun.h文件内容
extern void print_help(void);
extern void get_file_name(char *dest_file_name,char *src_file_name);
extern char *read_src_file(unsigned long *file_length,char *src_file);
extern char *file_text_encrypt(char *src_file_text,unsigned long length,unsigned int password);
extern void save_file(char *text,unsigned long length,char *file_name);
extern char *file_text_dncrypt(char *src_file_text,unsigned long length,unsigned int password);
main.c文件内容
#include<stdio.h>
#include<stdlib.h>
#include"fun.h"
int main()
{
while(1)
{
int cmd=0;
print_help();
scanf("%d",&cmd);
if(cmd==1)
{
FILE *fp=NULL;
char src_file[64]="";
char dst_file[64]="";
char arr[1100]="";
scanf("%s",arr);
unsigned long file_length = 0;
unsigned int password=0;
char *file_data=NULL;
get_file_name(dst_file,src_file);
fp=fopen(src_file,"w");
fputs(arr,fp);
fclose(fp);
file_data = read_src_file(&file_length,src_file);
printf("请输入你的密码:");
scanf("%u",&password);
file_data=file_text_encrypt(file_data,file_length,password);
save_file(file_data,file_length,dst_file);
fp=fopen(src_file,"w");
fputs("你也想知道不可能这是秘密",fp);
fclose(fp);
}
else if(cmd==2)
{
char src_file[64]="";
char dst_file[64]="";
unsigned long file_length = 0;
unsigned int password=0;
char *file_data=NULL;
get_file_name(dst_file,src_file);
file_data = read_src_file(&file_length,src_file);
printf("请输入你的密码:");
scanf("%u",&password);
file_data=file_text_dncrypt(file_data,file_length,password);
save_file(file_data,file_length,dst_file);
}
else if(cmd==3)
{
return;
}
else
{
printf("--请输入一个正确的选项--\n");
}
}
}