#include<stdio.h> #include<ctype.h> char mm[54]="QAZWSXEDCRFVTGBYHNUJMIKOLPqwertyuiop asdfghjklzxcvbnm"; char zmb[54]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO PQRSTUVWXYZ "; /* mm 为加密字符串即密钥, zmb 为原字母对照表 */ main(int argc,char *argv[]) { FILE *fp1,*fp2; int ch,flag=0; if((toupper(*argv[3])=='E')||(toupper(*argv[3])=='D')) flag=1; if((argc!=4)||(flag!=1)) { printf("/007 Error: 参数错误!!/n"); printf(" 格式:JM1 input output E/D /n"); exit(0); } if((fp1=fopen(argv[1],"r"))==0){ printf("/007 Error: 不能打开输入文件!/n"); exit(0); } if((fp2=fopen(argv[2],"w"))==0){ printf("/007 Error: 不能创建输出文件!/n"); exit(0); } do { ch=getc(fp1); if(ch==EOF) break; if(isalpha(ch)||ch==' ') if(toupper(*argv[3])=='E') /* E: 加密 D:解密 */ ch=mm[find(zmb,ch)]; else ch=zmb[find(mm,ch)]; putc(ch,fp2); } while(1); fclose(fp1); fclose(fp2); } find(char *s,int ch) { register int t; for(t=0;t< 54;t++) if(ch==s[t]) return t; }
|