關於C語言fgets函數的問題

C語言中從鍵盤輸入的函數有好幾個,fgets就是其中之一。

今天我用fgets函數寫代碼時也遇到一個問題:在第一次調用fgets函數後程序不會阻塞,而是輸出一個回車鍵,待第二次遇到fgets函數時,程序才阻塞。

經過好長時間的排查,才發現問題所在——在第一次調用fgets函數時,輸入緩衝區有內容,導致fgets直接從輸入緩衝區取出了數據進行輸出,就會有上述問題出現。

問題找到了,解決起來就簡單了,只需要在使用fgets之前將輸入緩衝區清空一遍,就可以了。

清空緩衝區的辦法有很多,這裏我爲大家提供一個函數及其用法:setbuf(stdin,NULL)

其他的辦法讀者可自行百度一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章