c-fgets()缓冲区中超出边界检查的额外字符会发生什么


#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个字符,那么将向arr[10]写入9个字符,并添加null终止符。但是缓冲区中剩下的字符会发生什么呢?它们是自动刷新/清除的,还是永远留在缓冲区中?即,超出界限检查的额外字符会导致问题吗?

但是缓冲区中的剩余字符会发生什么?

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

它们是自动刷新/清除的,还是永远留在缓冲区中?

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

超出界限检查的额外字符会导致问题吗?

不直接。这取决于程序如何处理无法读取多余输入的情况。

相关内容

  • 没有找到相关文章

最新更新