油克小学期(一)文件加密解密(1)建立多文件实现

要求功能:

1. 输入字符串信息保存到文件中(字母和数字)

2. 复制文件信息到另一个新的文件中

3. 实现文件的加密和解密

文件说明:

五个C语言程序,四个文件。

注:下面代码中的“```c”部分是为了使代码段有颜色,运行时删去即可。

程序实现:

加解密函数操作

```c
//文件名:加解密函数操作

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//函数encode()将字母顺序推后n位,实现文件加密功能
char encode(char c,int n)//加密函数 
{
	if(c>='a' && c<='z')
	{  //c是小写字母
    	if(c+n%26<='z')
		{  //若加密后不超出小写字母范围
            c=(char)(c+n%26);  //加密函数
        }
		else
		{  //加密后超出小写字母范围,从头开始循环小写字母
            c=(char)(c+n%26-26);
        }
    }
	else if(c>='A' && c<='Z')
	{ //c为大写字母
        if(c + n%26 <= 'Z')
		{  //加密后不超出大写字母范围
            c=(char)(c+n%26);
        }
		else
		{  //加密后超出大写字母范围,从头开始循环大写字母
            c=(char)(c+n%26-26);
        }
    }
    return c; 
}
    
    
//decode()实现解密功能,将字母顺序前移n位
char decode(char c,int m)
{
    if(c>='a' && c<='z')
	{//解密后还为小写字母,直接解密
        if(c-m%26>='a')
		{
            c=(char)(c-m%26);
        }
		else
		{//解密后不为小写字母了,通过循环小写字母处理为小写字母
            c=(char)(c-m%26+26);
        }
    }
	else if(c >= 'A' && c<='Z')
	{  //c为大写字母
       	if(c-m%26>='A')
		{  //解密后还为大写字母
        	c=(char)(c-m%26);
        }
		else
		{  //解密后不为大写字母了,循环大写字母,处理为大写字母
           	c=(char)(c-m%26+26);
       	}
	}
	return c;
}

一、输入字符串文件信息(字符串包含字母和数字)。

//文件名:1_输入字符串文件信息

#include <stdio.h>
int main() 
{
	FILE* fp;//文件类型指针变量
	char ch;
	fp = fopen("file_1.txt", "w");//以只写方式打开文本文件
	ch = getchar();	//键盘输入字符
	while (ch != '\n')//输入回车换行时结束while循环
	{
		fputc(ch, fp);//ch写出到fp指向的文件中
		ch = getchar();
	}
	printf("所输入已存入file_1");
	fclose(fp);//关闭文件
	return 0;
}K;

二、复制文件信息 :复制file_1文件信息到file_2。

//文件名:2_复制文件信息

#include <stdio.h>
#include <stdlib.h>//用到exit函数 
void main()
{
	FILE *in,*out;//文件指针变量 
	char ch;
	if((in=fopen("file_1.txt","r"))==NULL)//能否打开文件 
	{
		printf("error\n");
		exit(0);//结束程序 
	}
	if((out=fopen("file_2.txt","w"))==NULL)//能否打开文件
	{
		printf("error\n");
		exit(0);//结束程序 
	}
	ch=fgetc(in);//从文件读入一个字符 
	printf("已将file_1文件信息复制到file_2中\n"); 
	while(ch!=EOF)
	{
		fputc(ch,out);//写出一个字符到文件
		putchar(ch);//写出一个字符到屏幕 
		ch=fgetc(in); //从文件读入一个字符 
	}
	
	fclose(in);//关闭文件
	fclose(out);
}
	

三、实现文件加密建立文件file_3。

输入的n代表字母表示字母部分向后移动的位置数,举例:A向后移动5位置,加密后就变成F。

A B C D E F。具体解释在“加解密函数操作”程序中。

```c
//文件名:3_加密主函数

#include <stdio.h>
#include <stdlib.h>//用到exit函数 
#include <string.h>
#include"加解密函数操作.c"
int main()
{
	FILE *in,*out;//文件指针变量
	char ch;
	int n,m; 
	if((in=fopen("file_1.txt","r"))==NULL)//能否打开文件 
	{
		printf("error\n");
		exit(0);//结束程序 
	}
	if((out=fopen("file_3.txt","w"))==NULL)//能否打开文件
	{
		printf("error\n");
		exit(0);//结束程序 
	}
	ch=fgetc(in);//从文件读入一个字符 
	printf("加密操作\n");
	printf("输入信息字符移动位数\n");
	scanf("%d",&n);
	printf("加密后的字符信息(已存入file_3文件)\n");
	while(ch!=EOF)
	{
		char k;
		k=encode(ch,n);
		fputc(k,out);//写出一个字符到文件
		//putchar(ch);//写出一个字符到屏幕 
		putchar(k);
		printf(" ");
		ch=fgetc(in); //从文件读入一个字符 
	}
	fclose(in);//关闭文件
	fclose(out);
	return 0; 
}
	

四、实现文件解密建立文件file_4

```c

//文件名:4_解密主函数

#include <stdio.h>
#include <stdlib.h>//用到exit函数 
#include <string.h>
#include"加解密函数操作.c"
int main()
{
	FILE *in,*out;//文件指针变量
	char ch;
	int n,m; 
	if((in=fopen("file_3.txt","r"))==NULL)//能否打开文件 
	{
		printf("error\n");
		exit(0);//结束程序 
	}
	if((out=fopen("file_4.txt","w"))==NULL)//能否打开文件
	{
		printf("error\n");
		exit(0);//结束程序 
	}
	ch=fgetc(in);//从文件读入一个字符 
	printf("解密操作\n");
	printf("输入信息字符移动位数\n");
	scanf("%d",&m);
	printf("解密后的字符信息(已存入file_4文件)\n");
	while(ch!=EOF)
	{
		char j;
		j=decode(ch,m);
		fputc(j,out);//写出一个字符到文件
		//putchar(ch);//写出一个字符到屏幕 
		putchar(j);
		printf(" ");
		ch=fgetc(in); //从文件读入一个字符 
	}
	fclose(in);//关闭文件
	fclose(out);
	return 0; 
}
	

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城学神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值