当输入字符串超过预定义的限制时,我正面临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请不要回复,现在问题似乎你需要什么... –