【发布时间】:2012-11-06 17:52:10
【问题描述】:
我正在使用fdopen 和fgets 循环遍历 TCP 套接字输入的每一行,如下所示:
int connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
FILE *f;
char line[1024];
f = fdopen(connfd, "a+");
while(fgets(line, sizeof(line), f) != NULL) {
printf("%s", line);
}
printf("EOF");
fclose(f);
问题在于,由于某种奇怪的原因,fgets 似乎永远不会返回 NULL。有没有其他方法可以检查EOF?
【问题讨论】:
-
如果
fgets没有返回NULL,那么你的缓冲区中就没有EOF。
标签: c sockets inputstream eof fgets