fgets() 缓冲区中超出边界检查的额外字符会怎样?

What happens to the extra characters in the fgets() buffer that are over the bounds check?

#include<stdio.h>

int main() {
    char arr[10];
    printf("Enter your name: \n");
    fgets(arr, sizeof(arr), stdin);
    puts(arr);
    return 0;
}

我有一个 char arr[10] 并使用 fgets(arr, sizeof(arr), stdin) 来接收输入。如果我输入 20 个字符,9 个字符将被写入 arr[10] 以及添加的空终止符。但是缓冲区中剩余的字符会怎样呢?它们是自动获得 flushed/cleared 还是永远留在缓冲区中?即超出边界检查的额外字符会导致问题吗?

But what happens to the remaining chars in the buffer?

它们保留在 stdin 中用于下一个读取函数。

Do they get automatically flushed/cleared or are they left in the buffer forever?

留在 stdin 直到读取或程序结束。

Can extra chars that are outside the bounds check cause a problem?

不直接。这取决于您的程序如何应对读取过多输入失败。