我为加密词创建了以下C代码.(caesar cipher)当我运行它时,它总是打印U.如果你运行它,你会看到它.
#include<stdio.h>
int main(void){
int x;
char en[100];
fgets(en,100,stdin);
for(x=0;x<100;x++){
if(en[x]=='\0'){
break;
}
en[x]=((en[x]-71-3)%26)+97;
}
printf("%s\n",en);
}
Run Code Online (Sandbox Code Playgroud)
fgets在缓冲区末尾的'\ 0'前放置一个'\n'字符.因此,如果您不想加密它,请循环直到满足以下条件:
if (en[x] == '\0' || en[x] == '\n') break;
Run Code Online (Sandbox Code Playgroud)
要严格,您获得a的实际原因U是由于\n具有ASCII码10 的事实.因此(10-74)%26 + 97 = 85,这是ASCII代码U.