xor C移植版

さっきProcessingで書いたxorをCに移植し、色々とオプションを付けました

http://kkrnt.arckty.org/xor/c/xor.zip

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

int main(int argc, char *argv[])
{
	if(argc == 3){
		int cnt = 0;
		while(*(argv[2]+cnt) != '\0')
		{
			cnt++;
		}
		if(cnt != 1)
		{
			printf("鍵は1文字です\n");
			return -1;
		}
		FILE *fp;
		if((fp = fopen(argv[1], "r")) == NULL)
		{
			int i=0;
			while(*(argv[1]+i) != '\0')
			{
				printf("%c",*(argv[1]+i)^argv[2][0]);
				i++;
			}
		}else{
			char *line = fgets(argv[1], 256, fp);
			int i=0;
			while(*(line+i) != '\0')
			{
				printf("%c",*(line+i)^argv[2][0]);
				i++;
			}
		}
		return 0;
	}else{
		printf("XORを計算します\n\n");
		printf("xor [文字列] [鍵]\n");
		printf("xor [ファイル名] [鍵]\n\n");
		printf("ファイルを指定する場合, 終端に改行コードを含むを正確な値を表示できません\n");
		return -1;
	}
}


やってることは簡単なので、特に説明はないです
かなりやっつけでやってるので各々で修正を加えて下さい…

Processing版と比べて、
・標準入力が可能になった
・標準入力・ファイル入力を自動で判別する
・標準出力が可能になった
というオプションが追加されています

標準出力なので、勿論「>」を使ったファイル出力も可能です


※ファイル読み込みが雑なので、ファイルの終端に改行コードとかあると正確な値を表示できないので気をつけて下さい