要求功能:
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;
}