#プログラム大喜利 文字列をカエサル暗号化する関数またはプログラム

Twitter. It's what's happening.
Twitter. It's what's happening.

朝食を終えてから書いたので「朝飯前」とは言えないが、内容はそのレベル。
妙に真面目に書いてしまって、前提に無い条件にも対応はしている。

/*
caesar.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void caesar(char *buf, char * str)
{
	int i;
	int len;
	
	for(i = 0; str[i]; i++) {
		// 設問の前提から外れるけど、チェックを入れておく。
		if(!isalpha(str[i])) {
			buf[i] = str[i];
			continue;
		}
		buf[i] = (tolower(str[i]) > 'w') ? str[i] - 23 : str[i] + 3;
	}
	buf[i] = '\0';
}

int main(int argc, char **argv)
{
	int i;
	char * buf;
	
	for(i = 1; i < argc; i++) {
		buf = malloc(strlen(argv[i]) + 1);
		if(NULL == buf) return EXIT_FAILURE;
		caesar(buf, argv[i]);
		printf("%s ", buf);
		free(buf);
	}
	printf("\n");		// 勿体ないから putchar() とかでもいい。
	return EXIT_SUCCESS;
}