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