c语言用按位异或对文字加密

#include<stdio.h>#include<stdlib.h>voidmain(){chara,b;intkey=102;FILE*f1,*f2;f1=fopen... #include<stdio.h>
#include <stdlib.h>
void main()
{
char a,b;
int key=102;
FILE *f1,*f2;
f1=fopen("C:\\Users\\Administrator\\Desktop\\m.txt","r");
while(!feof(f1))
{
a=fgetc(f1);
printf("%c",a);
}
fclose(f1);
b=a^key;
if(!(f2=fopen("C:\\Users\\Administrator\\Desktop\\n.txt","w")))
{
printf("error");
exit(1);
}
while(b!=EOF)
{
fputc(b,f2);
}
fclose(f2);
}

为什么生成的文件总是打不开,是哪里不对呢
展开
 我来答
tianyuwuse
2014-01-01 · TA获得超过1117个赞
知道小有建树答主
回答量:494
采纳率:100%
帮助的人:233万
展开全部
不是打不开,应该是你的这个程序始终运行不完,生成的n.txt文件太大,打开需要一个过程,当文件大于100M后,打开就很慢了,大概在我的机器上需要一分钟,再大比如1000多M估计就需要很久才能打开了。
while(b!=EOF){fputc(b,f2);}问题出在这个循环上,b始终没有变化,这样该字符不可能为结束符,因此会一直循环下去。
这个问题的思路应该是:
1、打开文件m.txt,打开文件n.txt;
2、循环读取字符,读到一个,将该字符与key异或运算,然后马上写入 n.txt;
3、循环结束后关闭上述两个文件。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式