fgets的问题

zxhong 2006-12-20 03:43:56
多个fgets接收stdin

第一个fgets输入多的字符会自动到第二个fgets,导致第二个fgets没有等待输入就过去了

这个问题如何解决?象这种多个接收stdin流方式如何更好解决?
...全文
218 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
argenCHN 2006-12-20
  • 打赏
  • 举报
回复
up
zhenhaojia 2006-12-20
  • 打赏
  • 举报
回复
开足够大的buffer, 比最长的一行还大。
chary8088 2006-12-20
  • 打赏
  • 举报
回复
用getline()
redstorm_fyy 2006-12-20
  • 打赏
  • 举报
回复
string buf;
cin>>buf;
zhgc1983 2006-12-20
  • 打赏
  • 举报
回复
line 1:
aaaaaaaaaaaaa
aaaaaaaaa
line 2:
bbbbbbbbbbbb
bbbbbbbbb
line 3:
cccccccccccccccccc
ccccccccc

这样的效果不行吗?
zhgc1983 2006-12-20
  • 打赏
  • 举报
回复
很好啊,你是想怎么样的效果呢!
goodluckyxl 2006-12-20
  • 打赏
  • 举报
回复
如果定义的fgets的中接收缓冲大小比你输入间隔大的情况
那使用fflush是可以的
如果定义的接收缓冲只有10,但是一次输入2串命令每串都比10大
那就要用别的处理分割符号不是制表 空格 换行等标准输入间隔符号时
那就对整个串逐一输入分析
zxhong 2006-12-20
  • 打赏
  • 举报
回复
楼上这种方法不行啊
cmail 2006-12-20
  • 打赏
  • 举报
回复
用完一个fgets后刷新一下缓冲区。
fflush(stdin);
这个不是标准库函数,所以移植性不好。
zxhong 2006-12-20
  • 打赏
  • 举报
回复
不一定非要用fgets,主要是为了实现接收多个stdin流,like:
please input 1:
用户输入1
please input 2:
用户输入2
please input 3:
用户输入3

。。。。。
ccccffff 2006-12-20
  • 打赏
  • 举报
回复
非要用fgets?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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