我已经创建了以下用于加密单词的 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/