昨天完成了VBS的凯撒密码算法,然后发现Google出来的C语言的凯撒密码算法乱七八糟,很多都是复制粘贴的,还不注明转载地址,连最先的出处都找不到。唉,天下文章一大抄。很多时候,碰到问题Google出来的都是千篇一律的答案,千篇一律也就罢了,还都是没有用的,真受不了。什么?百度一下?百度一下更加什么都不知道!
原来以为C语言的很好写,想不到写了一个小时才写完(不要鄙视我,我承认我是菜鸟),太久没写程序,卡在指针上面了。以下是我写的凯撒密码的C语言算法。你要Java的?对不起,我是一个守旧的人,我不喜欢Java。但是原理都一样吧,不记得在哪里看过一个话,语言并不重要,重要的是算法,语言是会过时的,但是算法不会。
#include <stdio.h> #include <stdlib.h> #include <string.h> char *caesar(const char *str,int offset) { char *start,*ret_str; start = ret_str = (char *) malloc(strlen(str) + 1); for(;*str!='\0';str++,ret_str++) { if(*str>='A' && *str<='Z') *ret_str = 'A' + (*str - 'A' + offset) % 26; else if(*str>='a' && *str<='z') *ret_str = 'a' + (*str - 'a' + offset) % 26; else *ret_str = *str; } *ret_str = '\0'; return (char *) start; } int main(void) { printf("%s\n","ABCDEFGHIJKLMNOPQRSTUVWXYZ"); printf("%s\n",caesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ",3)); return 0; }