怎么判断标准输入缓冲区是否有数据?

kkk2017 2014-10-17 10:55:25
while (TRUE)
{
char cmdbuf[4];
fgets(cmdbuf,4,stdin);
//这里输入了许多数据,大于4,然后回车。
//我想判断标准输入缓冲区是否有数据?如果有我就循环调用getchar()清空缓冲区数据。
// int c;
//while((c = getchar()) != '\n' && c != EOF);

//但是如果没有数据的话,getchar这里会等待输入。
//问题就是怎么判断标准输入缓冲区是否有数据?
printf("%s\n",cmdbuf);
}
...全文
1019 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹影半墙 2014-10-18
  • 打赏
  • 举报
回复
fgets(buf,bufsize -1,fp) man fgets
zhxianbin 2014-10-17
  • 打赏
  • 举报
回复
楼主看看 select 是不是你想要的效果
  • 打赏
  • 举报
回复
Portably, you can get the next character in the input stream with getchar() and then push it back with ungetc(), which results in a state as if the character wasn't removed from the stream. or you could use setvbuf on stdin with your own buffer, so you can peek whenever you want

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧