永发信息网

求助:解析C语言程序,要求有详细注释。

答案:2  悬赏:50  手机版
解决时间 2021-12-02 20:45
  • 提问者网友:酱爆肉
  • 2021-12-02 09:34
求助:解析C语言程序,要求有详细注释。
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-12-02 11:02
#include
#include
#include

main()
{
void sc(char *fp,char *key,int Flen,int Klen);
FILE *fp; //定义文件指针
char *pBuf,filename[20],key[20],ch; //定义一个缓冲区指针,文件名字符数组,加密字符数组,一个字符

printf("请输入选择:A、加密 B、解密 C退出\n"); //提示输入A/B/C
ch=getchar(); //获取键盘输入
while(ch!='c'&&ch!='C') //判断键盘输入,如果输入的不是C
{
if(ch=='a'||ch=='A'||ch=='b'||ch=='B') //如果输入的是a/A/bB
{
printf("请输入要打开的文件名:\n"); //提示输入要打开的文件名
scanf("%s",filename); //取得输入的文件名
if((fp=fopen(filename,"rb"))==NULL) //打开文件
{printf("无法打开文件,请注意输入后缀!\n"); //如果无法打开文件则提示
exit(0);
}

fseek(fp,0,SEEK_END); //将位置指针移到文件末尾
int len=ftell(fp); //取得指针相对于文件头的位移量
pBuf=new char[len+1]; //pBuf指向一个长度为len+1的缓冲区
rewind(fp); //位置指针置于文件开头
fread(pBuf,1,len,fp); //读入fp指向的文件,每次读入1字节,读入len次,放入pBuf指向的缓冲区
pBuf[len]=0; //缓冲区末尾置0作为结束标记
printf("%s\n",pBuf); //显示读入的内容
fclose(fp); //关闭文件

printf("请输入加密/解密的密码:\n"); //提示输入密码
scanf("%s",key); //输入字符
sc(pBuf,key,len,strlen(key)); //调用加解密函数

printf("请输入保存加密文件的文件名:\n"); //提示输入文件名
scanf("%s",filename); //输入字符
if((fp=fopen(filename,"wb"))==NULL) //打开文件
{printf("无法保存文件,请注意磁盘是否已满!\n"); //提示无法保存文件
exit(0);
}
else
fwrite(pBuf,1,len,fp); //可以打开文件则将pBuf指向的缓冲区中的内容保存
fclose(fp); //关闭文件
printf("请输入选择:A、加密 B、解密 C退出\n"); //提示选择A/B/C
}
else {
printf("输入错误,请重新输入\n");
}
ch=getchar();
ch=getchar();
}
}
void sc(char *fp,char *key,int Flen,int Klen)
{int i,j,k; //定义三个整形变量
for(i=0;ifor(j=i,k=0;kfp[j]^=key[k]; //key相应字节与文件相应字节运算

fp[i]='\0'; //文件缓冲区末尾置0标记
printf("%s\n",fp); //显示加密/解密后的内容
}
全部回答
  • 1楼网友:掌灯师
  • 2021-12-02 12:22
不就简单的加解密么,拿这个用到哪呀
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯