我已经为加密单词创建了以下C代码(凯撒密码),当我运行这个代码时,它总是在末尾打印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);
}
最佳答案
fgets
在缓冲区末尾的“\0”前放置一个“\n”字符因此,如果不想对其加密,请循环,直到满足以下条件:
if (en[x] == '\0' || en[x] == '\n') break;
严格来说,得到
U
的实际原因是\n
有ASCII代码10因此,(10-74)%26 + 97 = 85
,这是U
的ASCII代码。关于c - 为什么该程序总是在末尾显示U,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25835927/