只能用文本文件(不知道为什么,下一次写的时候我用二进制操作应该可以了吧,可能是误读了EOF的原因)(加密解密共用一个程序,比如说输入文件地址xxx后会生成一个xxx.dingluo的文件)(原理是把整个文件反着存储一遍,然后把每个字节都用255减一遍)
#include <cstdio> #include <cstring> #include <cstdlib> using namespace std; int main() { printf("请输入需要加密/解密的文件名(文件大小最多1MB) "); char s[256],mem[1024*1024+5];//顶多1MB scanf("%s",s); FILE*fp; fp=fopen(s,"r"); if(fp==NULL) { printf("输入有误,退出程序 "); system("pause"); return 0; } strcat(s,".dingluo"); FILE*fp2=fopen(s,"w"); int p=0; while((mem[p]=fgetc(fp))!=EOF) p++; p--; while(p!=-1) { fputc(255-mem[p],fp2); p--; } fclose(fp2); fclose(fp); fp=NULL; printf("加密/解密成功!转换后的文件名为%s ",s); system("pause"); return 0; }
2