我能帮忙翻译。以下是一段用C语言编写的代码。
每当第一个fgets收到长度超过4个字符的输入时,第二个fgets就会在没有等待输入的情况下退出。
如果第一个输入为1000,则第二个fgets会挂起并等待输入。然而,如果输入有5个字符,例如10000,则第二个fgets存在并且程序结束。
这种行为的解释是什么?
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(void)
{
char buf1[8];
char buf2[1024];
int n;
fgets(buf1, 6, stdin);
n = atoi(buf1);
fgets(buf2, 16, stdin);
return 0;
}
每当第一个fgets收到长度超过4个字符的输入时,第二个fgets就会在没有等待输入的情况下退出。
如果第一个输入为1000,则第二个fgets会挂起并等待输入。然而,如果输入有5个字符,例如10000,则第二个fgets存在并且程序结束。
这种行为的解释是什么?
1000
+ 'Enter',那么程序会等待另一个 Enter 被键入。 - KamilCukfgets
(以及其他stdio输入函数)的意思是“从输入流中获取字符”,而不是“等待输入”。只有在没有足够的字符来满足请求时才会发生等待。 - M.Mfgets()
的返回值呢?它可能读取的比你要求的少,所以你需要利用那个值。 - Toby Speight