當輸入字符串超過預定義的限制時,我正面臨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所接受的字符串的大小,應該做什麼?
非常感謝
如果你一直在編輯你的帖子,其他答案將來沒有任何意義。 SO不是針對解決具體問題,而是幫助他人尋找答案。 – P0W
我會恢復它。抱歉! – Hooli
@IDK請不要回復,現在問題似乎你需要什麼... – Gangadhar