#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
中,直到读取或程序结束。
超出界限检查的额外字符会导致问题吗?
不直接。这取决于程序如何处理无法读取多余输入的情况。