我为加密词创建了以下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);
}
答案 0 :(得分:6)
fgets
在缓冲区末尾的'\ 0'前加一个'\ n'字符。因此,如果您不想加密它,请循环直到满足以下条件:
if (en[x] == '\0' || en[x] == '\n') break;
要严格,您获得U
的实际原因是由于\n
具有ASCII码10这样的事实。因此,(10-74)%26 + 97 = 85
,这是一个ASCII代码U
。
答案 1 :(得分:0)
if (en[x] == '\0' || en[x] == '\n') break;
以上条件应该可以解决您的问题。 下面的link
给出了\ 0和\ n的一些读数他是“线索”运行的输出,可以逐步提供更多洞察力
trial
*rial
rial
q(ial
qial
qoal
qoal
qofl
qofl
qofx"
qofx
qofxi?
qofxi?
qofxiU