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

10-13 08:06