你会发现,如果输入结束后至少一些字符读取,但是遇到新行之前fgets
返回非空(的指针提供的缓冲区)和提供的缓冲区将不包含换行符,但将被终止。
这正是fgets
所说的文档。
E.g.
#include <stdio.h>
int main(void)
{
char buffer[200];
char* ret = fgets(buffer, sizeof buffer, stdin);
printf("exit code = %p\n", (void*)ret);
if (ret != 0)
{
printf("read code = %s<--END\n", buffer);
}
return 0;
}
输出:
$ printf "no newline here->" | ./a.out
exit code = 0x7fff6ab096c0
read code = no newline here-><--END
或:
$ printf "newline here->\nmore text\n" | ./a.out
exit code = 0x7fff6f59e330
read code = newline here->
<--END
上没有输入:
$ printf "" | ./a.out
exit code = (nil)
我不清楚你想了解什么。当您键入Ctrl-D和其他控制组合键时,您是否想要了解'fgets'的行为或终端的典型行为? – 2012-01-14 11:12:57