一、概述
调用fgets的流只有在以下3种情况下才会刷出缓冲区(即函数返回):
二、示例
编写一段这样的代码,结尾追加一个"|"字符好区分fgets返回的次数:
#include <stdio.h> #include <stdlib.h> #define BUFFSIZE 8 int main(void) { char* buff = malloc(BUFFSIZE); char* receive = NULL; while((receive = fgets(buff, BUFFSIZE, stdin)) != NULL) { printf("%s|", receive); } return 0; }
验证情况1:
输入:
123 456789
输出:
123 |456789|
可见两次返回,第一次输出123\n,第二次返回456789\0;
验证情况2:
输入:
12345678
输出:
1234567|8|
可见两次输出,第一次由于输入填满了缓冲区n - 1 即7字节,所以输出了1234567\0,第二次输出剩下的8\0;
原文:https://www.cnblogs.com/yiyide266/p/13549005.html