c: 加密与解密

#include<stdio.h>
#include<stdlib.h>

char * makeMorse(char ch, char *m){
	int i;
	for(i=0;i<8;i++){
		m[7 - i]=(ch%2)?'.':'-';
		ch = ch >>1;
	}
	return m;
}

char getMorse(char *m){
	int i;
	char ch = 0;
	for(i=0;i<8;i++){ 
		ch = ch << 1;
		ch = ch |((m[i] == '.')?1:0);
	}
	return ch;
}

int main(int argc,char *argv[]){
	FILE *fp;
	char buff[8],ch;
	long filelen;
	
	if(argc<2){
		system("pause");
		return 1;
	}
	if(argv[1][0] == 'm'){
		puts("hello");
		fp = fopen("Morse.y1","wb");
	}else if(argv[1][0] == 'u'){
		fp = fopen("Morse.y1","rb");
	}else{
		fp = NULL;
	}
	//if(argv[1][0] == 'm'){
	//	fp = fopen("Morse.y1","rb");
	//}else{
	//	fp = NULL;
	//}
	if(argv[1][0] == 'm'){
		//encode 
		
		while((ch = getchar())!='&'){
			//printf("%d",sizeof(char));
			fwrite(makeMorse(ch,buff),sizeof(char),8,fp);
		}
	}else{
		//decode
		fseek(fp,0,SEEK_END);
		filelen = ftell(fp);
		fseek(fp,0,SEEK_SET);
		while(ftell(fp)<filelen){
			fread(buff,sizeof(char),8,fp);
			putchar(getMorse(buff));
		}
		system("pause");
	}
	if(!fp){
		return 2;
	}

	fclose(fp);
	system("pause");
	return 0;
}

  

posted @ 2012-07-01 23:03  ligang305  阅读(230)  评论(0)    收藏  举报