标题: 用C语言实现凯撒密码算法
作者: Demon
链接: https://demon.tw/programming/c-caesar.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
昨天完成了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; }
微信赞赏支付宝赞赏
随机文章:
楼主已经很强的了,俺连C语言都不会……
为什么不释放内存呢?
有一处严重错误,当key为负值的时候,程序会胡乱的输出一堆ASCII字符的。
key表示向左或向右偏移的位数吧,key为负数?是要哪个意思,还能向左偏移—4位?
key 表示向后篇移的位数,负数就是向前偏移啊。我写过一个好的,需要给你。
[…] 关于恺撒密码的算法及实现,网上一搜一大堆,但有些代码是有问题的。比如这个:http://demon.tw/programming/c-caesar.html。当偏移量为负时,我们很欣喜地看到了乱码。 […]
[…] 关于恺撒密码的算法及实现,网上一搜一大堆,但有些代码是有问题的。比如这个:http://demon.tw/programming/c-caesar.html。当偏移量为负时,我们很欣喜地看到了乱码。 […]