非常简单的例子 - 希望有一个简单的解决方案:
char x[7];
if(fgets(x,5,stdin))
printf("y");
else
printf("n");
当我输入超过字节限制时,我似乎无法让它打印“n” - 有没有什么简单的方法可以强制执行或在超过它时捕获?
作为一个附带问题,哪些示例输入实际上会导致上述代码段中的“n”?我现在真的没有看到重点..
干杯,B
fgets
失败时将返回 0,因此要获得“n”作为输出,您可以使用 control-D 或 control-Z(或您的操作系统用来指示输入结束的任何内容),而无需先输入任何其他内容。
要检测何时输入的内容多于您留下的阅读空间,请检查您阅读的最后一个字符是否是换行符。如果是,你读了一整行。如果不是,还有更多的等待。
您需要检查 stdin via 等中是否仍有数据等待select()
。
重定向/dev/null
或一个 0 字节的文件到标准输入可以到它。
fgets 仅在读取任何内容失败时才返回 NULL,这通常意味着文件结束。
由于 fgets 读取一行或该行中适合缓冲区的多个字符,因此您需要检查变量 x 是否包含换行符。