为什么 fgets() 不接受 C 程序中的输入?

Why is fgets() not taking input in C program?

我在 C 中编写了代码来实现 Julias Caesar 密码学。
问题是我的 fgets() 没有等待输入,跳到 fputs()

#include<stdio.h>
int main(){
    int size;
    printf("Enter the size of the string: ");
    scanf("%d",&size);

    int key;
    printf("Enter the key: ");
    scanf("%d",&key);

    char a[size];
    printf("Enter the string: ");
    fgets(a,size,stdin);

    for(int i=0;i<size;i++){
        a[i]+=key;
    }

    fputs(a,stdout);
    return 0;
}

我使用 CodeBlocks 17.12 编译了这个 C 程序。
我的 OS 是 Windows 7(32 位)

欢迎使用 Whosebug。

当您输入答案时,缓冲区中的末尾 (\n) 有一个换行符。当 fgets() 读取您的输入时,它会读取换行符。您可以删除换行符,或使用正则表达式跳过它,或在该行上使用 fgets() 一次,以便您可以再次使用 scanf() ,如 this other answer 中的建议,这可能对您有帮助。

而且,请记得在发布问题之前在 Whosebug 中进行搜索!