你會發現,如果輸入結束後至少一些字符讀取,但是遇到新行之前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