当输入字符串超过预定义的限制时,我在使用 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 - 1处添加'\0'并结束。问题发生在我尝试输入第二个未被要求的字符串时,即
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接受的字符串大小,应该做什么?
非常感谢。