⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.c

📁 这是能将文件进行加密的一个工具
💻 C
字号:
///////////////////////////////////////////////////////////////////////////////
//
//  文	件: Common.c
//		普通函数
//
//  作  者: 江南孤峰 
//  联  系:QQ: 403324669   
//  时  间: 2007--3--3
//
///////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#include <conio.h>
#include "FilePass.h"

// 显示菜单
void ShowMenu(
	      char *strAddFileSuffix,
	      char *strFreeFileSuffix,
	      int iProgramStatus
	 ){
	char Directory[_MAX_PATH];
	
	if(_getcwd(Directory,_MAX_PATH)!=NULL)  
		printf("\n当前工作目录: %s\n",Directory);
	else
		printf("\n当前工作目录: 获取失败 \n");
	
	printf("文件类型: 待加密文件[%s]",strAddFileSuffix);
	printf("\t加密后文件[%s]\n",strFreeFileSuffix);
	printf("文件处理: ");
	PrintDeleteFileMethod(iProgramStatus);
	printf("\n备 分 器: %s\n",(iBackupProgram == ON)?"开":"关");
	ShowFunctionMenu();
}

// 打印当前加密器的文件处理方式
void	PrintDeleteFileMethod(int iProgramStatus){
	switch(iProgramStatus){
		case DELETE_PASS_FILE:
			printf("只在解密后删除加密文件");
			break;
		case DELETE_SOURCE_FILE:
			printf("只在加密后删除原始文件");
			break;
		case DELETE_PASS_SOURCE_FILE:
			printf("加密后删除原始文件,解密后删除加密文件");
			break;
		case DELETE_NONE:
			printf(" 不删除文件");
			break;
		default:
			printf("文件处理方式未知");
	}
}

// 修改加密器配置
void	UpdateProgramStation(
		char *strAddFileSuffix,
		char *strFreeFileSuffix,
		int  *iProgramStatus
	){
	int	iSelectUpdate = 0;
	int	iSuccess = FALSE;
	char	buffer[FILE_SUFFIX_LENGTH+8]={FILE_SUFFIX_LENGTH + 4};

	printf("============================ 加密器配置菜单 =========================\n");
	printf("1:待加密文件类型   当前为[%s]\n",strAddFileSuffix);
	printf("2:加密文件显示类型 当前为[%s]\n",strFreeFileSuffix);
	printf("3:备分器状态       当前为[%s]\n",iBackupProgram == ON?"开":"关");
	printf("4:文件处理方式     当前为[");
	PrintDeleteFileMethod(*iProgramStatus);
	printf("]\n请选择您要修改的项目:");
	scanf("%d",&iSelectUpdate);
	getchar();
	switch(iSelectUpdate){
		case 1: iSuccess = UpdateSuffix(ADD_PASS,strAddFileSuffix);
			break;
		case 2: iSuccess = UpdateSuffix(FREE_PASS,strFreeFileSuffix);
			break;
		case 3: iBackupProgram = (iBackupProgram == ON)?OFF:ON;
			iSuccess = TRUE;
			break;
		case 4: iSuccess = UpdateDeleteFileMethod(iProgramStatus);
			break;
		default:puts("没有该选项 \n");
			break;
	}
	printf("%s\n",iSuccess == TRUE?"修改操作成功":"修改操作失败");
}

// 修改文件类型
int	UpdateSuffix(int iOperate,char *strFileSuffix){
	char	buffer[FILE_SUFFIX_LENGTH+8]={FILE_SUFFIX_LENGTH + 4};
	char	*pSuffixTemp;

	if(iOperate == ADD_PASS)
		printf("请输入待加密文件类型:");
	else
		printf("请输入加密文件显示类型:");
	pSuffixTemp = _cgets(buffer);
	if(strlen(pSuffixTemp) > FILE_SUFFIX_LENGTH){
		printf("文件后缀长度超过 %d \n",FILE_SUFFIX_LENGTH);
		return FALSE;
	}
	else if(pSuffixTemp[0] != '.'){
		puts("文件后缀形式为[.xxxx],后缀名错误 !\n");
		return FALSE;
	}
	else	
		strcpy(strFileSuffix,pSuffixTemp);
	return TRUE;
}

// 修改文件处理方式
int	UpdateDeleteFileMethod(int *iProgramStatus){
	int	iSelectUpdate = -1;

	puts("处理方式如下:");
	printf(" %d: %s\n",DELETE_PASS_FILE,"只在解密后删除加密文件");
	printf(" %d: %s\n",DELETE_SOURCE_FILE,"只在加密后删除原始文件");
	printf(" %d: %s\n",DELETE_PASS_SOURCE_FILE,
		"加密后删除原始文件,解密后删除加密文件");
	printf(" %d: %s\n",DELETE_NONE,"不删除文件");
	printf("请选择文件处理方式:");
	scanf("%d",&iSelectUpdate);
	getchar();
	switch(iSelectUpdate){
		case DELETE_PASS_FILE:
			*iProgramStatus = DELETE_PASS_FILE;
			break;
		case DELETE_SOURCE_FILE:
			*iProgramStatus = DELETE_SOURCE_FILE;
			break;
		case DELETE_PASS_SOURCE_FILE:
			*iProgramStatus = DELETE_PASS_SOURCE_FILE;
			break;
		case DELETE_NONE:
			*iProgramStatus = DELETE_NONE;
			break;
		default: 
			puts("没有该选项 \n");
			break;
	}
	return TRUE;
}

// 操作后文件处理
void	MyDeleteFile(char *strFileName,int iProgramStatus,int iOperate){
	int  iSuccess = TRUE;
	
	switch(iProgramStatus){
		case DELETE_PASS_FILE:
			if(iOperate == ADD_PASS)
				return ;
			break;
		case DELETE_SOURCE_FILE:
			if(iOperate == FREE_PASS)
				return ;
			break;
		case DELETE_PASS_SOURCE_FILE:
			break;
		case DELETE_NONE:
			return ;
	}
	if(iOperate == ADD_PASS && iBackupProgram == ON){ 
		BackupFile(strFileName);
		return ;
	}
	if(remove(strFileName))
		printf("错误: 删除文件: %s失败 !\n",strFileName);
	else			
		printf("删除文件: %s 完成\n",strFileName);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -