中易网

C语言中最简单的字符串加密解密问题!!!!希望大家帮帮忙,分不是问题 !!

答案:3  悬赏:60  
解决时间 2021-01-17 19:22
C语言中最简单的字符串加密解密问题!!!!希望大家帮帮忙,分不是问题 !!
最佳答案
加密解密的算法都没错,错的是解密程序里的文件操作方法。
rewind(fp)没有必要。因为fp已经被close了。
一般不推荐同时对一个文件又读又写,因为这样会导致很多缓冲区同步的问题。比如:
fputc()和getc()之间,必须要调用fflush(fp);
即使这样,还是会有问题。比如回车,getc()可能会返回两个字符,\n和\a。但是用fputc()写入的时候,分别写入\n和\a会把第二行第一个字符覆盖掉。

正确的做法是:
先把解密的数据保存到字符串里,全部结束之后,一次性把解密完的字符串写到文件里去。

void main()
{
char ch,name[30];
char content[1000];
int n = 0;
FILE *fp;
printf("name:\a");
gets(name);
fp = fopen(name,"r+");
if(fp==NULL)
{
printf("No file: %s!\n\a",name);
return;
}
ch = getc(fp);
while(ch!=EOF)
{
if((isalpha(ch))!=0)
{
if((ch >= 'a' && ch <= 'd') || (ch >= 'A' && ch <='D'))
ch = ch + 22;
else
ch = ch - 4;
}
content[n++] = ch;
ch = getc(fp);
//ch = getc(fp);
}
content[n] = 0;
rewind(fp);
fprintf(fp, "%s", content);
fclose(fp);

printf("%s ok\a\n",name);
printf("content: %s\n", content);
printf("\n");
}
全部回答
wkjf
问题在于,你的加密算法是不可逆的,也就是说,无法保证解密。
比如原文是aw,加密之后是aa,你解密成什么啊?ww?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有人可以带我去台湾吗,我好想去台湾,我喜欢
过磅室求个高端大气的名字
限制高消费令的现实意义
你好,请帮忙查下卫生许可证GD.fda(2005)卫妆
求男主重生的洪荒成为天道或者大道 或者混沌
奔跑吧兄弟第1234季的超能力
老舍母鸡中的多音字组
桌球斯诺克怎么打
如何在CentOS6上安装Python2.7和Python3.3
在乎才会乱想,不在乎连想都不会想 这句话对
巴厘岛康乐休闲会馆停车场地址在什么地方,我
城市与文明游戏中,如何修建小型园林
输液时用质量分数为0.9%的生理盐水或5%葡萄糖
请问制作卤水需要哪些材料,是什么味道的,需
富士施乐2018复印机复印,很淡,看不到字了,
推荐资讯
天梯幼儿园地址好找么,我有些事要过去
惠普 246 g4性能怎么样
男友强迫我。。。。
类似再为君妇小说生前不知珍惜重生后再续前缘
看山是山看山不是山看山还是山对应的三首古诗
【德语】schließen和abschließen什
谁有胖太的资源啊 跪求
男生正在追求女生,可女生为什么三不五时刺激
下图泰国牛奶面部乳液多少钱
常州轻工职业技术学院是大专还是大学
破晓by洛夜 双洁吗?
FF14怎么用宏把几个技能绑定到一个键上
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?