fgets()缓冲区中超出边界检查的额外字符会发生什么情况? #包括 int main(){ char-arr[10]; printf(“输入您的姓名:\n”); fgets(arr、sizeof(arr)、标准DIN); puts(arr); 返回0; }
我有一个fgets()缓冲区中超出边界检查的额外字符会发生什么情况? #包括 int main(){ char-arr[10]; printf(“输入您的姓名:\n”); fgets(arr、sizeof(arr)、标准DIN); puts(arr); 返回0; },c,buffer,fgets,extra,C,Buffer,Fgets,Extra,我有一个char-arr[10]并使用fgets(arr,sizeof(arr),stdin)接收输入。如果我输入20个字符,9个字符将写入arr[10],并添加空终止符。但是缓冲区中剩余的字符会发生什么变化呢?它们是自动刷新/清除还是永远留在缓冲区中?i、 e.超出边界检查的额外字符是否会导致问题 但是缓冲区中剩余的字符会发生什么变化呢 它们保持在stdin中,用于下一个读取功能 它们是自动刷新/清除还是永远留在缓冲区中 在stdin中保留,直到读取或程序结束 超出边界检查的额外字符会导致问题
char-arr[10]
并使用fgets(arr,sizeof(arr),stdin)
接收输入。如果我输入20个字符,9个字符将写入arr[10]
,并添加空终止符。但是缓冲区中剩余的字符会发生什么变化呢?它们是自动刷新/清除还是永远留在缓冲区中?i、 e.超出边界检查的额外字符是否会导致问题
但是缓冲区中剩余的字符会发生什么变化呢
它们保持在stdin
中,用于下一个读取功能
它们是自动刷新/清除还是永远留在缓冲区中
在stdin
中保留,直到读取或程序结束
超出边界检查的额外字符会导致问题吗
不直接。这取决于您的程序如何处理无法读取多余输入的问题。如果fgets放入字符数组的字符串不包含新行字符,则表示输入缓冲区包含其他字符,您可以使用fgets的一次调用读取这些字符。它们将保留在输入缓冲区中,直到您读取它们为止。只有当程序不能正确处理短读时,它们才会导致问题。
#include<stdio.h>
int main() {
char arr[10];
printf("Enter your name: \n");
fgets(arr, sizeof(arr), stdin);
puts(arr);
return 0;
}