fgets阻塞 stdin 退出_fgets溢出后如何清除输入缓冲区?

当输入字符串超过预定义的限制时,我正面临fgets的一个小问题。fgets溢出后如何清除输入缓冲区?

以下面的例子:

for(index = 0; index < max; index++)

{printf(" Enter the %d string : ",index+1)

if(fgets(input,MAXLEN,stdin))

{

printf(" The string and size of the string is %s and %d \n",input,strlen(input) + 1);

removeNewLine(input);

if(strcmp(input,"end") != 0)

{ //Do something with input

}

}

现在,当我超过长度MAXLEN和输入字符串,我知道输入将在MAXLEN追加一个“\ 0” -1,这将是它。当我尝试进入未要求即

Output :

Enter the first string : Aaaaaaaaaaaaaaaaaaaa //Exceeds limit

Enter the second string : Enter the third string : ....Waits input

所以第二个字符串时出现的问题,我想我应该清除缓冲区的标准方式在C.它等待,直到我进入

return

两次,它第一次被附加到字符串和下一次,期待更多的输入与另一个返回。 1.是否有任何方法可以在不输入额外返回的情况下清除缓冲区? 2.我该如何实现相同的错误处理?因为fgets的返回值是非null,而strlen(input)给了我fgets所接受的字符串的大小,应该做什么?

非常感谢

2013-08-21

Hooli

+0

如果你一直在编辑你的帖子,其他答案将来没有任何意义。 SO不是针对解决具体问题,而是帮助他人寻找答案。 –

+0

我会恢复它。抱歉! –

+0

@IDK请不要回复,现在问题似乎你需要什么... –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值