我正在尝试在 C 中实现 rot13 算法。但由于我对该语言不是很熟悉,所以我的代码在这里遇到了一些问题。
基本上,我想将 args[] 中的每个字母向上旋转 13 个位置。但是这段代码似乎很慢:
#include <stdio.h>
char[] rotate(char c[]) {
char single;
int i;
int alen = sizeof(c)/sizeof(c[0]);
char out[alen];
for(i=0;i<=alen;i+=1) {
if(c[i]>='a' && (c[i]+13)<='z'){
out[i] = c[i]+13;
}
}
return out;
}
int main(int argc, char *argv[]) {
printf("The given args will be rotated\n");
int i;
char rotated[sizeof(argv)/sizeof(argv[0])];
rotated = rotate(argv);
/* printing rotated[] later on */
return 0;
}
我知道这里有很多漏洞 - 你能告诉我如何解决这个问题吗?